anchor.diff:                if FCursorPos <= UTF8Length(texte) then
                   Inc(FCursorPos);
             end;
  -  			texte := Copy(txt, long - i, 1) + texte;
  -  			inc(i);
  -  		until i = long;
  -  	end;
  -  if fText > '' then
  -    if fText[1] = '-' then
  -      if UTF8Pos(FDecimalSeparator, fText) > 0 then
  -        fText := '-' + texte + FDecimalSeparator + decimal
  +        texte := Copy(txt, long - i, 1) + texte;
  +        inc(i);
  +      until i = long;
  +    end;
  +    if fText > '' then
  +    begin
  +      if fText[1] = '-' then
  +      begin
  +        if UTF8Pos(FDecimalSeparator, fText) > 0 then
  +          fText := '-' + texte + FDecimalSeparator + decimal
  +        else
  +          fText := '-' + texte;
  +      end
         else
  -        fText := '-' + texte
  -    else
  -      if UTF8Pos(FDecimalSeparator, fText) > 0 then
  -        fText := texte + FDecimalSeparator + decimal
  -      else
  -        fText := texte + decimal;
  +      begin
  +        if UTF8Pos(FDecimalSeparator, fText) > 0 then
  +          fText := texte + FDecimalSeparator + decimal
  +        else
  +          fText := texte + decimal;
  +      end;
  +    end;
     end;
   end;
   
  
positive.code: 
  procedure TfpgBaseNumericEdit.SetShowThousand;
  var
  	i,long: integer;
    txt, texte, decimal: string;
  begin
    if FDecimals > 0 then
  
negative.code:     if fText > '' then
        if fText[1] = '-' then
          txt:= UTF8Copy(txt, 2, UTF8Length(txt)-1);
      long := UTF8Length(txt);
      if long = 0 then
        texte := ''
      else
      begin
        for i := 1 to UTF8Length(txt) do
          if fpgCharAt(txt, i) = FThousandSeparator then
          begin
            txt:= UTF8Copy(txt, 1, i - 1) + UTF8Copy(txt, i + 1, long - i);
            dec(long);
          end;
        i := 0;
        texte := '';
        repeat
          if i > 0 then
            if ((i mod 3) = 0) and (fpgCharAt(txt,UTF8Length(txt)-UTF8Length(texte)) <> FThousandSeparator) then
            begin
              texte := FThousandSeparator + texte;
              if fText[1] = '-' then
              begin
                if Pred(FCursorPos) <= UTF8Length(texte) then
  