anchor.diff:      class function GetPowerOfTen(N: Integer): BigInteger; static;
   
       // Initialize or reset values of scale and precision to 0.
  -    procedure Init;
  -
  -    // Checks if the NewScale value is a valid scale value. If so, simply returns NewScale.
  +    procedure Init; inline;
  +
  +    // Checks if the NewScale value is a valid scale value. If so, simply returns NewScale. Otherwise, raises
  +    // an appropriate exception.
       class function RangeCheckedScale(NewScale: Int32): Integer; static;
   
       // Only allows 'e' or 'E' as exponent delimiter for scientific notation output.
  
positive.code:     Lo: Cardinal;
      Hi: Integer;
    end;
  begin
    if FValue.IsZero then
      Result := 1
    else
    begin
      // 1292913986 is Log10(2) * 1^32.
      Result := CardRec(FValue.BitLength * UInt64(1292913986)).Hi;
      if (GetPowerOfTen(Result) <= Abs(FValue)) or (Result = 0) then
        Inc(Result);
      FPrecision := Result;
  
negative.code:       // So 1.79 is coded as FValue = 179 and FScale = 2, whereas 1.7900 is coded as FValue = 17900 and FScale = 4.
        FScale: Int32;
  
        // The precision is the number of digits in FValue. This is originally 0, and calculated when used the first time.
        // If this value is not 0, then the precision does not need to be calculated and this value can be used.
        FPrecision: Int32;
  
      class var
  