diff --git a/source/RobotAPI/libraries/core/TrajectoryController.cpp b/source/RobotAPI/libraries/core/TrajectoryController.cpp
index ef74dd1fc47b1f67dbc44bb97f87f5dc5346a39c..5328d534a2b6ce76915a343e2cdad3014a4ee1b4 100644
--- a/source/RobotAPI/libraries/core/TrajectoryController.cpp
+++ b/source/RobotAPI/libraries/core/TrajectoryController.cpp
@@ -48,6 +48,7 @@ namespace armarx
         //}
         positions.resize(traj->dim(), 1);
         veloctities.resize(traj->dim(), 1);
+        currentError.resize(traj->dim(), 1);
     }
 
     const Eigen::VectorXf& TrajectoryController::update(double deltaT, const Eigen::VectorXf& currentPosition)
@@ -82,7 +83,18 @@ namespace armarx
                 veloctities(i) = 0;
             }
         }
-        currentError = positions - currentPosition;
+        for (size_t i = 0; i < dim; ++i)
+        {
+            if (pid->limitless.size() > i && pid->limitless.at(i))
+            {
+                currentError(i) = math::MathUtils::AngleDelta(currentPosition(i), positions(i));
+            }
+            else
+            {
+                currentError(i) = positions(i) - currentPosition(i);
+            }
+
+        }
 
         pid->update(std::abs(deltaT), currentPosition, positions);
         veloctities += pid->getControlValue();