diff --git a/transition_machine/src/Oracle.cpp b/transition_machine/src/Oracle.cpp
index 1283b7c2871678966aebddd1860a04e6cb4b06ff..ccb2d6a75f572e419c1e57f988ba3f2b9fd83770 100644
--- a/transition_machine/src/Oracle.cpp
+++ b/transition_machine/src/Oracle.cpp
@@ -669,6 +669,21 @@ void Oracle::createDatabase()
         newState = "tagger";
         movement = lastIndexDone[newState]-c.getHead()+1;
         lastIndexDone[previousState] = c.getHead();
+        if (lastIndexDone[newState]+1 >= c.getTape("FORM").size())
+        {
+          newState = "morpho";
+          movement = lastIndexDone[newState]-c.getHead()+1;
+          if (lastIndexDone[newState]+1 >= c.getTape("FORM").size())
+          {
+            newState = "lemmatizer_rules";
+            movement = lastIndexDone["lemmatizer_case"]-c.getHead()+1;
+            if (lastIndexDone["lemmatizer_case"]+1 >= c.getTape("FORM").size())
+            {
+              newState = "parser";
+              movement = lastIndexDone[newState]-c.getHead()+1;
+            }
+          }
+        }
         if (c.endOfTapes())
         {
           newState = "parser";