anchor.diff:      result:=DFAMatch;
      end;
      if (State^.Flags and sfDFAStart)<>0 then begin
  -    Offset:=Instance.SearchNextPossibleStartForDFA(@LocalInput[Position],UntilExcludingPosition-Position);
  -    if Offset<0 then begin
  -     exit;
  -    end;
  -    inc(Position,Offset);
  -    State:=InitializeStartState(Position,UnanchoredStart);
  -    if assigned(State) and ((State^.Flags and sfDFAMatchWins)<>0) then begin
  -     MatchEnd:=Position-1;
  -     result:=DFAMatch;
  +    if Position<UntilExcludingPosition then begin
  +     TemporaryTestState:=State^.NextStates[LocalByteMap^[byte(ansichar(LocalInput[Position]))]];
  +     if assigned(TemporaryTestState) and ((TemporaryTestState^.Flags and sfDFAStart)<>0) then begin
  +      Offset:=Instance.SearchNextPossibleStartForDFA(@LocalInput[Position],UntilExcludingPosition-Position);
  +      if Offset<0 then begin
  +       exit;
  +      end;
  +      inc(Position,Offset);
  +      State:=InitializeStartState(Position,UnanchoredStart);
  +      if assigned(State) and ((State^.Flags and sfDFAMatchWins)<>0) then begin
  +       MatchEnd:=Position-1;
  +       result:=DFAMatch;
  +      end;
  +     end;
       end;
      end;
     end;
  
positive.code: end;
  {$else}
  var Position,Offset:longint;
      State,LastState:PFLREDFAState;
      LocalInput:pansichar;
      LocalByteMap:PFLREByteMap;
  begin
  
negative.code:     result:=DFAMatch;
     end;
     if (State^.Flags and sfDFAStart)<>0 then begin
      if Position<UntilExcludingPosition then begin
       TemporaryTestState:=State^.NextStates[LocalByteMap[byte(ansichar(LocalInput[Position]))]];
       if assigned(TemporaryTestState) and ((TemporaryTestState^.Flags and sfDFAStart)<>0) then begin
        Offset:=Instance.SearchNextPossibleStartForDFA(@LocalInput[Position],UntilExcludingPosition-Position);
        if Offset<0 then begin
         exit;
        end;
        inc(Position,Offset);
       end;
      end;
     end;
    end;
   end;
  