diff --git a/transition_machine/src/Oracle.cpp b/transition_machine/src/Oracle.cpp
index ccb2d6a75f572e419c1e57f988ba3f2b9fd83770..8838de4a121dd259c8b3b87bf2e21db66cd214a6 100644
--- a/transition_machine/src/Oracle.cpp
+++ b/transition_machine/src/Oracle.cpp
@@ -699,6 +699,13 @@ void Oracle::createDatabase()
     else
       newState = "unknown("+std::string(ERRINFO)+")("+previousState+")("+previousAction+")";
 
+    if (c.isFinal())
+    {
+      done = {{"tagger",0},{"morpho",0},{"lemmatizer_case",0},{"parser",0}};
+      lastIndexDone = {{"tagger",-1},{"morpho",-1},{"lemmatizer_case",-1},{"parser",-1}};
+      todo = {{"tagger",3*lookahead+1},{"morpho",2*lookahead+1},{"lemmatizer_case",lookahead+1}};
+    }
+
     return "MOVE " + newState + " " + std::to_string(movement);
   },
   [](Config &, Oracle *, const std::string &)