diff --git a/wpilibc/src/main/native/cpp/PIDController.cpp b/wpilibc/src/main/native/cpp/PIDController.cpp index 9642a3cbe7..e782ffac08 100644 --- a/wpilibc/src/main/native/cpp/PIDController.cpp +++ b/wpilibc/src/main/native/cpp/PIDController.cpp @@ -640,11 +640,14 @@ void PIDController::InitTable(std::shared_ptr subtable) { * @return Error for continuous inputs. */ double PIDController::GetContinuousError(double error) const { - if (m_continuous && std::fabs(error) > m_inputRange / 2) { - if (error > 0) { - return error - m_inputRange; - } else { - return error + m_inputRange; + if (m_continuous) { + error = std::fmod(error, m_inputRange); + if (std::fabs(error) > m_inputRange / 2) { + if (error > 0) { + return error - m_inputRange; + } else { + return error + m_inputRange; + } } } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PIDController.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PIDController.java index 3a54a3f989..98b9e48dfe 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PIDController.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PIDController.java @@ -773,11 +773,14 @@ public class PIDController implements PIDInterface, LiveWindowSendable, Controll * @return Error for continuous inputs. */ protected double getContinuousError(double error) { - if (m_continuous && Math.abs(error) > m_inputRange / 2) { - if (error > 0) { - return error - m_inputRange; - } else { - return error + m_inputRange; + if (m_continuous) { + error %= m_inputRange; + if (Math.abs(error) > m_inputRange / 2) { + if (error > 0) { + return error - m_inputRange; + } else { + return error + m_inputRange; + } } }