anchor.diff:  var
     NewScale: Integer;
   begin
  -  NewScale := Scale - Digits;
  -  if NewScale < MinScale then
  -    Error(ecOverflow, []);
  +  NewScale := RangeCheckedScale(Scale - Digits);
     Result := BigDecimal.Create(FValue, NewScale);
     if Result.FScale < 0 then
       Result.FScale := 0;
  
positive.code: var
    NewScale: Integer;
  begin
    NewScale := Scale + Digits;
    if NewScale > MaxScale then
      Error(ecUnderflow, []);
    Result := BigDecimal.Create(FValue, NewScale);
    if Result.FScale < 0 then
      Result.FScale := 0;
  
negative.code: //  Multiplication is the easiest: multiply the unscaled values and add the scales.  //
  //                                                                                   //
  ///////////////////////////////////////////////////////////////////////////////////////
  
  class function BigDecimal.Multiply(const Left, Right: BigDecimal): BigDecimal;
  begin
    Result.Init;
  