diff --git a/transition_machine/src/Config.cpp b/transition_machine/src/Config.cpp
index 7345d0e3a116838aaa591f0c526f41ea5acbd25e..514ea28d091a741fcd6225f575218a6d23e1a03d 100644
--- a/transition_machine/src/Config.cpp
+++ b/transition_machine/src/Config.cpp
@@ -708,7 +708,11 @@ bool Config::rawInputOnlySeparatorsLeft() const
   if (rawInputHeadIndex >= (int)rawInput.size())
     return true;
 
-  return rawInput.size() - rawInputHeadIndex <= 2 && util::isSeparator(rawInput[rawInputHeadIndex+1]);
+  for (int i = rawInputHeadIndex; i < (int)rawInput.size(); i++)
+    if (!util::isSeparator(rawInput[i]))
+      return false;
+
+  return true;
 }
 
 bool Config::endOfTapes() const
diff --git a/transition_machine/src/Oracle.cpp b/transition_machine/src/Oracle.cpp
index 014143f8f84faa812e562c0197697c7ac68b8136..ec954b2e7c625e33ffcfeb7da81de86e50ca2370 100644
--- a/transition_machine/src/Oracle.cpp
+++ b/transition_machine/src/Oracle.cpp
@@ -925,7 +925,7 @@ void Oracle::createDatabase()
       newState = "tokenizer";
       movement = lastIndexDone[newState]-c.getHead()+1;
 
-      if (c.rawInputHeadIndex >= (int)c.rawInput.size() || done[newState] >= todo[newState])
+      if (c.rawInputHeadIndex >= (int)c.rawInput.size() || c.rawInputOnlySeparatorsLeft() || done[newState] >= todo[newState])
       {
         newState = "tagger";
         movement = lastIndexDone[newState]-c.getHead()+1;