diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index fbe922ea47578c261f997a684091e9baecacd46e..1a48d92d16c5d797acf43224a6697e3e874ae363 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -2820,7 +2820,7 @@ void FakeVimHandler::Private::moveToWordBoundary(bool simple, bool forward, bool
         QChar c = doc->characterAt(m_tc.position() + (forward ? 1 : -1));
         //qDebug() << "EXAMINING: " << c << " AT " << position();
         int thisClass = charClass(c, simple);
-        if (thisClass != lastClass && lastClass != 0)
+        if (thisClass != lastClass && (lastClass != 0 || changeWord))
             --repeat;
         if (repeat == -1)
             break;