diff --git a/src/measurement/position_measurement.js b/src/measurement/position_measurement.js
index b4bcfda5bc8e264cb2df0fbfa13b81d4d0989547..0f5f398757cbd882b1dcc8afff70b063a92286e5 100644
--- a/src/measurement/position_measurement.js
+++ b/src/measurement/position_measurement.js
@@ -479,7 +479,7 @@ function coordsCharInner(cm, lineObj, lineNo, x, y) {
         steps = Math.min(steps, Math.ceil(Math.abs(diff) / diff_change_per_step))
         dir = diff < 0 ? 1 : -1
       }
-    } while (steps > 1 || ((dir < 0) != (diff < 0) && (Math.abs(diff) <= Math.abs(prevDiff))))
+    } while (diff != 0 && (steps > 1 || ((dir < 0) != (diff < 0) && (Math.abs(diff) <= Math.abs(prevDiff)))))
     if (Math.abs(diff) > Math.abs(prevDiff)) {
       if ((diff < 0) == (prevDiff < 0)) throw new Error("Broke out of infinite loop in coordsCharInner")
       pos = prevPos