anchor.diff:      end;
       result := o-1;
     finally begin
  -    if result = 0 then begin
  +    if result = 0 then
  +    begin
  +      {$ifdef MEMOPAD}
  +      addmemo(inS.char, inNode, failure);
  +      {$endif}
         //err.popNode('!!!');
         err.popNode('!!! '+inNode.name);
         rootdestroy(child); child := nil;
         if assigned(Node) then
           rootDestroy(Node);
         Node := nil;
  -    end else err.popNode('');
  +    end else
  +    begin
  +      {$ifdef MEMOPAD}
  +      addmemo(inS.char, inNode, success);
  +      {$endif}
  +      err.popNode('');
  +    end;
       if (partial = true) AND (result = 0) then {err('Danger Will Robinson, Danger ' + inNode.name)}; { $ENDIF}
     end; end;
   end;
  
positive.code:   child.point := inNode;
    //dumbAtom := innode.RHS;
    o := 1;
    result := 0;
    dumbAtom := innode.RHS[0];
    if (dumbAtom.typed = nonTerminal) AND (dumbAtom.data = inNode.name) then
      raise EDraakNoCompile.Create('Infinate recursion on '+inNode.name);
  
negative.code:   done:    boolean;
    tempS: TString;
  begin
    //write(inNode.id); write(' : '); write(inS.char); writeln(' : '+inNode.name);
    err.newNode(inNode.name); // + '"' + inS.copy(0, 10) + '"');
  
    result := 0;
  
    {$DEFINE MEMOPAD}
    {$ifdef MEMOPAD}
    case checkPad(inS.char, inNode) of
      unknown: ;
      success: ;
      failure: exit;
      inprogress:
        begin
          raise EDraakNoCompile.Create('Infinate recursion on '+inNode.name);
        end;
    end;
  
    addmemo(inS.char, inNode, inprogress);
    {$endif}
  
    partial := false;
    child := new(PParseNode);
    Node := nil;
  