         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

                waitingForFinish();
                _sys.currentPosition[0] = 0;
                _sys.currentPosition[1] = 0;
            }
            break;
            case 90:

                {
                    lineTo(x, y);
                }
            }
            break;
            case 4:
