         shiftPlanned();
         if (_sys.plannedLength > 0)
         {
+            if (_sys.prevDir[0] != _points[0].dir[0])
+            {
+                _sys.currentPosition[0] -= steppers[0].getBack() * (_points[0].dir[0] ? 1 : -1);
+            }
+            if (_sys.prevDir[1] != _points[0].dir[1])
+            {
+                _sys.currentPosition[1] -= steppers[1].getBack() * (_points[0].dir[1] ? 1 : -1);
+            }
             firePower(_points[0].power);
         }
 #ifdef DEBUG

{
    if (_sys.plannedLength > 0)
    {
        for (int i = 0; i < _sys.plannedLength - 1; i++)
        {
            _points[i] = _points[i + 1];

}
void addMotion(long x, long y, uint8_t power, uint16_t speed, uint16_t acceleration)
{
    _sys.targetPosition[0] = x;
    _sys.targetPosition[1] = y;
    _points[_sys.plannedIndex].targetPosition[0] = x;
    _points[_sys.plannedIndex].targetPosition[1] = y;
    _points[_sys.plannedIndex].dir[0] = _prevPoint.targetPosition[0] < _points[_sys.plannedIndex].targetPosition[0];
