diff --git a/src/search.c b/src/search.c
index c986d48..4d7db03 100644
--- a/src/search.c
+++ b/src/search.c
@@ -635,11 +635,12 @@ EXECUTE_FCT(Fexecute)
       if (offset == (size_t) -1)
         goto failure;
 #ifdef MBS_SUPPORT
-      if (MB_CUR_MAX > 1 && is_mb_middle (&mb_start, beg + offset, buf + size))
-        {
-          beg = mb_start - 1;
-          continue; /* It is a part of multibyte character.  */
-        }
+      if (MB_CUR_MAX > 1)
+      {
+        while (is_mb_middle (&mb_start, beg+offset, buf+size))
+          beg++;
+        continue;
+      }
 #endif /* MBS_SUPPORT */
       beg += offset;
       len = kwsmatch.size[0];
