anchor.diff:      LBase := LBase * LBase;
       Exponent := Exponent shr 1;
     end;
  +
  +  if LNegativeExp then
  +    Result := BigDecimal.Divide(BigDecimal.One, Result, DefaultPrecision);
   end;
   
   function BigDecimal.IntPower(Exponent, Precision: Integer): BigDecimal;
  
positive.code:     ecRounding:
        // Rounding was necessary but rmUnnecessary was specified.
        raise ERoundingNecessary.Create(SRounding);
      else
        // Invalid operand to operator.
        raise EInvalidOpException.Create(SInvalidOperation);
  
negative.code: class function BigDecimal.IntPower(const Base: BigDecimal; Exponent, Precision: Integer): BigDecimal;
  var
    LBase: BigDecimal;
    LNegativeExp: Boolean;
  begin
    if Exponent = 0 then
      Exit(BigDecimal.One);
  
    LNegativeExp := Exponent < 0;
    if LNegativeExp then
      Exponent := -Exponent;
  
    if Exponent > 9999999 then
      Error(ecExponent, []);
  
    if (Base.Precision > 8) and (Exponent >= IntPowerExponentThreshold) then
    begin
      Result := One;
  