diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp
index d4325e032a1f40c86a706fec3d1ee7b3e2def34f..29d2420024718ef702fe8c97d3c32fd8e9a4662b 100644
--- a/src/plugins/fakevim/fakevimhandler.cpp
+++ b/src/plugins/fakevim/fakevimhandler.cpp
@@ -975,7 +975,7 @@ void FakeVimHandler::Private::setAnchor()
     if (!isVisualMode()) {
         m_anchor = m_tc.position();
     } else {
-        m_marks['<'] = m_tc.position();
+    //    m_marks['<'] = m_tc.position();
     }
 }
 
@@ -4063,6 +4063,9 @@ void FakeVimHandler::Private::selectWordTextObject(bool inner)
     m_movetype = MoveExclusive;
     moveToWordBoundary(false, false, true);
     setAnchor();
+    // FIXME: Rework the 'anchor' concept.
+    if (isVisualMode()) 
+        m_marks['<'] = m_tc.position();
     moveToWordBoundary(false, true, true);
     m_movetype = MoveInclusive;
 }
@@ -4073,6 +4076,9 @@ void FakeVimHandler::Private::selectWORDTextObject(bool inner)
     m_movetype = MoveExclusive;
     moveToWordBoundary(true, false, true);
     setAnchor();
+    // FIXME: Rework the 'anchor' concept.
+    if (isVisualMode()) 
+        m_marks['<'] = m_tc.position();
     moveToWordBoundary(true, true, true);
     m_movetype = MoveInclusive;
 }