You are missing/gaining steps, I do not see any other explanation. Rounding, backlash, calibration - none of that should cause a cumulative error, unless there is a bug in the controller math.