diff --git a/Config.py b/Config.py
index 92599b6c0bd107a97da1ca6fc6e655ed717312b7..52c8d23c1e768844b0ed07fc11110a34899b0444 100644
--- a/Config.py
+++ b/Config.py
@@ -19,6 +19,9 @@ class Config :
     self.historyHistory = set()
     self.historyPop = []
 
+  def isPredicted(self, colname) :
+    return colname in self.predicted
+
   def hasCol(self, colname) :
     return colname in self.col2index
   
@@ -121,7 +124,7 @@ class Config :
       toPrint = []
       for colIndex in range(len(self.lines[index])) :
         value = str(self.getAsFeature(index, self.index2col[colIndex]))
-        if value == "" :
+        if value == "" or value == "_" :
           value = "_"
         elif self.index2col[colIndex] == "HEAD" and value != "-1":
           value = self.getAsFeature(int(value), "ID")
@@ -153,6 +156,7 @@ def readConllu(filename, predicted) :
         if head == "_" :
           continue
         if head == "0" :
+          configs[-1].set(index, "HEAD", -1, False)
           continue
         configs[-1].set(index, "HEAD", id2index[head], False)
         configs[-1].goldChilds[int(id2index[head])].append(index)
diff --git a/Transition.py b/Transition.py
index 7ad6dfb24c1d104583f2cfa3f196d87a4e627369..ca41bcf03b06e7badfc5058592ecaceae43ced58 100644
--- a/Transition.py
+++ b/Transition.py
@@ -266,7 +266,7 @@ def applyReduce(config) :
 
 ################################################################################
 def applyEOS(config) :
-  if not config.hasCol("HEAD") :
+  if not config.hasCol("HEAD") or not config.isPredicted("HEAD") :
     return
 
   rootCandidates = [index for index in config.stack if not config.isMultiword(index) and isEmpty(config.getAsFeature(index, "HEAD"))]