anchor.diff:    Result.FScale := NewScale;
   end;
   
  -class procedure BigDecimal.SetDefaultPrecision(Value: Integer);
  -var
  -  I: Integer;
  -begin
  -  if Value <> FDefaultPrecision then
  -  begin
  -    FDefaultPrecision := Value;
  -    for I := 0 to FListenerCount - 1 do
  -      FListeners[I](FDefaultPrecision, FDefaultRoundingMode);
  -  end;
  -end;
  -
  -class procedure BigDecimal.SetDefaultRoundingMode(Value: RoundingMode);
  -var
  -  I: Integer;
  -begin
  -  if Value <> FDefaultRoundingMode then
  -  begin
  -    FDefaultRoundingMode := Value;
  -    for I := 0 to FListenerCount - 1 do
  -      FListeners[I](FDefaultPrecision, FDefaultRoundingMode);
  -  end;
  -end;
  -
   class procedure BigDecimal.SetExponentDelimiter(const Value: Char);
   begin
     if (Value = 'e') or (Value = 'E') then
  
positive.code: {                                                                           }
  {---------------------------------------------------------------------------}
  
  {---------------------------------------------------------------------------}
  { Updates:                                                                  }
  {                                                                           }
  {   2016-02-13: Added SetDefaultPrecision and SetDefaultRoundingMode,       }
  {               which notify listeners about the change.                    }
  {---------------------------------------------------------------------------}
  
  
  unit Velthuis.BigDecimals;
  
  {$IF CompilerVersion >= 24.0}
  
negative.code:         rmUnnecessary           // Do not round, because operation has exact result
        );
  
      const
        /// <summary>Maximum value a BigDecimal's scale can have</summary>
        MaxScale = MaxInt div SizeOf(Velthuis.BigIntegers.TLimb);
  