anchor.diff:    Condition:=State^.Action[LocalByteMap^[byte(ansichar(LocalInput[CurrentPosition]))]];
     MatchCondition:=NextMatchCondition;
   
  -  if ((Condition and sfEmptyAllFlags)=0) or Satisfy(Condition) then begin
  +  if ((Condition and sfEmptyAllFlags)=0) or
  +     (((Condition and sfEmptyAllFlags) and not GetSatisfyFlags(CurrentPosition))=0) then begin
      NextIndex:=Condition shr sfIndexShift;
      State:=pointer(@pansichar(Nodes)[StateSize*longint(NextIndex)]);
      NextMatchCondition:=State^.MatchCondition;
  
positive.code:       continue;
       end;
       opZEROWIDTH:begin
        if Satisfy(Instruction^.Value,Position) then begin
         Instruction:=Instruction^.Next;
         continue;
        end else begin
  
negative.code: 
    if (MatchCondition<>sfImpossible) and
       (((Condition and sfMatchWins)<>0) or ((NextMatchCondition and sfEmptyAllFlags)<>0)) and
       (((MatchCondition and sfEmptyAllFlags)=0) or
        (((MatchCondition and sfEmptyAllFlags) and not GetSatisfyFlags(CurrentPosition))=0)) then begin
     for Counter:=0 to CountSubMatches-1 do begin
      OnePassNFAMatchSubMatches[Counter]:=OnePassNFAWorkSubMatches[Counter];
     end;
  