diff --git a/src/cfgrammar.c b/src/cfgrammar.c
index 77e7ecad7ea1a70597a4c7c70ee21d9184a6c672..1d8071232ffef1ffefda91df545a32620a11ff70 100644
--- a/src/cfgrammar.c
+++ b/src/cfgrammar.c
@@ -586,6 +586,7 @@ const HStringMap *h_follow(size_t k, HCFGrammar *g, const HCFChoice *x)
   // iterate over g->nts
   size_t i;
   HHashTableEntry *hte;
+  int x_found=0;
   for (i=0; i < g->nts->capacity; i++) {
     for (hte = &g->nts->contents[i]; hte; hte = hte->next) {
       if (hte->key == NULL) {
@@ -600,7 +601,8 @@ const HStringMap *h_follow(size_t k, HCFGrammar *g, const HCFChoice *x)
         HCFChoice **s = (*p)->items;        // production's right-hand side
         
         for (; *s; s++) {
-          if (*s == x) { // occurance found
+          if (*s == x) { // occurrence found
+            x_found=1;
             HCFChoice **tail = s+1;
 
             const HStringMap *first_tail = h_first_seq(k, g, tail);
@@ -612,6 +614,7 @@ const HStringMap *h_follow(size_t k, HCFGrammar *g, const HCFChoice *x)
       }
     }
   }
+  assert(x_found || x == g->start);        // no orphan non-terminals
 
   return ret;
 }