anchor.diff:                LValue^:=LValue^+c^;
                 Inc(c);
               until not (c^ in ['0'..'9', '.']);
  +            Dec(c);
               case AExpressionKind of
  -              ekUnknown, ekSet: LToken:=tkNum;
  +              ekUnknown, ekSet, ekNum: LToken:=tkNum;
                 ekText:
                   begin
                     LValue^:=LValue^+LChar.Char[0];
                     LToken:=tkText;
                   end;
  -              ekNum: raise  Exception.Create('Bad numeric expression');
  +              //ekNum: LToken//raise Exception.Create('Bad numeric expression');
               end;
  -
  +            LToken:=tkNum;
             end;
           '%':
             begin
               if not (AExpressionKind in [ekText,ekUnknown]) then
                 Exception.Create('Bad numeric expression');
  -            if c^ = '%' then
  +            if (c+1)^ = '%' then
               begin
                 LToken := tkText;
                 LValue^ := LValue^ + '%';
  -              GetChar(c, LChar, @c);
  +              Inc(c);
               end
               else
                 LToken := tkPercent;
  -
             end;
           '<':
  -          if c^ = '=' then
  +          if (c+1)^ = '=' then
             begin
               LToken := tkLessOrEqual;
  -            GetChar(c, LChar, @c);
  +            Inc(c);
             end
             else
               LToken := tkLess;
           '>':
  -          if c^ = '=' then
  +          if (c+1)^ = '=' then
             begin
               LToken := tkGreaterOrEqual;
  -            GetChar(c, LChar, @c);
  +            Inc(c);
             end
             else
               LToken := tkGreater;
  
positive.code:     if AChar.Length = 4 then AChar.Char[3] := APos[3];
  
      Inc(APos, AChar.Length);
      ANewPos^ := APos;
    end;
  
  var
    c: PAnsiChar;
    LChar: TUTF8Char;
    LValueIdx: Integer = -1;
    LValues: array[0..MAX_VALUES-1] of utf8string; // for now only 2 values for set
  
negative.code:   TSetKind = (skUnknown, skNumericBetweenInclusive, skNumericBetweenExclusive);
  
    TExpressionRecord = record
      Values: array of utf8string;
    case Kind: TExpressionKind of
      ekUnknown: ();
      ekText: (TextMatchKind: TTextMatchKind);
  