anchor.diff:        end;
         StrLo:=ToString(Lo);
         StrHi:=ToString(Hi);
  -      if length(StrLo)=length(StrHi) then begin
  -       for i:=1 to length(StrLo) do begin
  -        AddRange(byte(StrLo[i]),byte(StrHi[i]));
  +      if byte(ansichar(StrLo[0]))=byte(ansichar(StrHi[0])) then begin
  +       for i:=1 to byte(ansichar(StrLo[0])) do begin
  +        AddRange(byte(ansichar(StrLo[i])),byte(ansichar(StrHi[i])));
          end;
          AddSuffix;
         end;
  
positive.code:     result[5]:=ansichar(byte($80 or (CharValue and $3f)));
     end;
     $04000000..$7fffffff:begin
      SetLength(result,6);
      result[1]:=ansichar(byte($fc or ((CharValue shr 30) and $01)));
      result[2]:=ansichar(byte($80 or ((CharValue shr 24) and $3f)));
      result[3]:=ansichar(byte($80 or ((CharValue shr 18) and $3f)));
  
negative.code:                                                      (($f0,$f0),($80,$bf),($80,$bf),($80,$bf),(-1,-1)),  // F0-F0 90-BF 80-BF 80-BF
                                                       (($f1,$f3),($80,$bf),($80,$bf),($80,$bf),(-1,-1)),  // F1-F3 80-BF 80-BF 80-BF
                                                       (($f4,$f4),($80,$bf),($80,$bf),($80,$bf),(-1,-1))); // F4-F4 80-8F 80-BF 80-BF
   var OutputNode,NodeChain:PFLRENode;
    procedure Add(const NewNode:PFLRENode);
    begin
  