diff --git a/src/chars.c b/src/chars.c
index 0eff611c49a9d9b8da589a72d3f0aba42e936f05..0372568d40c0dbdd7b0ac3228efcbebb766da850 100644
--- a/src/chars.c
+++ b/src/chars.c
@@ -374,10 +374,10 @@ int parse_mbchar(const char *buf, char *chr, size_t *col)
  * before the one at pos. */
 size_t move_mbleft(const char *buf, size_t pos)
 {
+#ifdef ENABLE_UTF8
+    if (use_utf8) {
     size_t before, char_len = 0;
 
-    assert(pos <= strlen(buf));
-
     /* There is no library function to move backward one multibyte
      * character.  So we just start groping for one at the farthest
      * possible point. */
@@ -404,6 +404,9 @@ size_t move_mbleft(const char *buf, size_t pos)
     }
 
     return before - char_len;
+    } else
+#endif
+    return (pos == 0 ? 0 : pos - 1);
 }
 
 /* Return the index in buf of the beginning of the multibyte character