diff --git a/src/search.c b/src/search.c
index c986d48..dabb933 100644
--- a/src/search.c
+++ b/src/search.c
@@ -634,14 +634,11 @@ EXECUTE_FCT(Fexecute)
       size_t offset = kwsexec (kwset, beg, buf + size - beg, &kwsmatch);
       if (offset == (size_t) -1)
        goto failure;
+      beg += offset;
 #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 && is_mb_middle (&mb_start, beg, buf + size))
+        continue; /* It is a part of multibyte character.  */
 #endif /* MBS_SUPPORT */
-      beg += offset;
       len = kwsmatch.size[0];
       if (start_ptr && !match_words)
        goto success_in_beg_and_len;
