anchor.diff:  Begin
       Result := False;
   
  -	If (FCursor <= FBkLimit) Then Exit;
  -
  -	ch := Ord(FCurrent[FCursor]);
  -	If (ch > max) Or (ch < min) Then
  +    If (FCursor <= FBkLimit) Then Exit;
  +
  +    ch := Ord(FCurrent[FCursor]);
  +    If (ch > max) Or (ch < min) Then
       Begin
           Dec(FCursor);
  -	    Result := True;
  +        Result := True;
           Exit;
  -	End;
  -
  -	ch := ch - min;
  +    End;
  +
  +    ch := ch - min;
       If (Ord(s[ch Shr 3]) And Ord(1 Shl (ch And $7))) = 0 Then
       Begin
  -	    Dec(FCursor);
  -	    Result := True;
  -	End;
  +        Dec(FCursor);
  +        Result := True;
  +    End;
   End;
   
   Function TSnowballProgram.EqS(s_size : Integer; s : AnsiString) : Boolean;
  
positive.code: Begin
      Result := False;
  
  	if (FCursor - FBkLimit) < s_size Then Exit;
  
  	For I := 1 To s_size Do
  	    If FCurrent[FCursor - s_size + I] <> s[i] Then Exit;
  
  	FCursor := FCursor - s_size;
  
      Result := True;
  End;
  
negative.code: Procedure TSnowballProgram.SetCurrent(Current: AnsiString);
  Begin
      FCurrent := Current;
      FCursor  := 0;
      FLimit   := Length(Current);
      FBkLimit := 0;
      FBra     := FCursor;
      FKet     := FLimit;
  End;
  
  Function TSnowballProgram.InGrouping(s : array of char; min, max : Integer) : Boolean;
  Var ch : Integer;
  Begin
      Result := False;
      If (FCursor >= FLimit) Then Exit;
  
      ch := Ord(FCurrent[FCursor + 1]);
      If (ch > max) Or (ch < min) Then Exit;
  
      ch := ch - min;
      If (Ord(s[ch Shr 3]) And Ord(1 Shl (ch And $7))) = 0 Then Exit;
  
      Inc(FCursor);
      Result := True;
  End;
  
  Function TSnowballProgram.InGroupingBk(s : array of char; min, max : Integer) : Boolean;
  Var ch : Integer;
  Begin
      Result := False;
      If (FCursor <= FBkLimit) Then Exit;
  
      ch := Ord(FCurrent[FCursor]);
      If (ch > max) Or (ch < min) Then Exit;
  
      ch := ch - min;
      If (Ord(s[ch Shr 3]) And Ord(1 Shl (ch And $7))) = 0 Then Exit;
  
      Dec(FCursor);
      Result := True;
  End;
  
  Function TSnowballProgram.OutGrouping(s : array of char; min, max : Integer) : Boolean;
  Var ch : Integer;
  Begin
      Result := False;
      If (FCursor >= FLimit) Then Exit;
  
      ch := Ord(FCurrent[FCursor + 1]);
  
      If (ch > max) Or (ch < min) Then
      Begin
          Inc(FCursor);
          Result := True;
          Exit;
      End;
  
      ch := ch - min;
      If (Ord(s[ch Shr 3]) And Ord(1 Shl (ch And $7))) = 0 Then
      Begin
          Inc(FCursor);
          Result := True;
      End;
  End;
  
  Function TSnowballProgram.OutGroupingBk(s : array of char; min, max : Integer) : Boolean;
  