anchor.diff:  
     if (MatchCondition<>sfImpossible) and
        (((Condition and sfMatchWins)<>0) or ((NextMatchCondition and sfEmptyAllFlags)<>0)) and
  -     (((MatchCondition and sfEmptyAllFlags)=0) or Satisfy(MatchCondition)) then begin
  +     (((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;
  
positive.code:  
   if assigned(State) and not Done then begin
    MatchCondition:=State^.MatchCondition;
    if (MatchCondition<>sfImpossible) and (((MatchCondition and sfEmptyAllFlags)=0) or Satisfy(MatchCondition)) then begin
     if ((MatchCondition and sfCapMask)<>0) and (CountSubMatches>0) then begin
      for Counter:=0 to CountSubMatches-1 do begin
       if (MatchCondition and ((1 shl sfCapShift) shl Counter))<>0 then begin   
  
negative.code:       continue;
       end;
       opZEROWIDTH:begin
        if ((longword(Instruction^.Value) and sfEmptyAllFlags) and not GetSatisfyFlags(Position))=0 then begin
         Instruction:=Instruction^.Next;
         continue;
        end else begin
  