anchor.diff:    RightUpper := RightCopy shr HalfN;
     RightLower := RightCopy and HalfMask;
   
  -  DivThreeHalvesByTwo(LeftCopy shr N, (LeftCopy shr HalfN) and HalfMask, RightCopy, RightUpper, RightLower,
  -    HalfN, QuotientUpper, Rem);
  -  DivThreeHalvesByTwo(Rem, LeftCopy and HalfMask, RightCopy, RightUpper, RightLower, HalfN, QuotientLower, Rem);
  +  DivThreeHalvesByTwo(LeftCopy shr N, (LeftCopy shr HalfN) and HalfMask, RightCopy, RightUpper,
  +    RightLower, HalfN, QuotientUpper, Rem);
  +  DivThreeHalvesByTwo(Rem, LeftCopy and HalfMask, RightCopy, RightUpper,
  +    RightLower, HalfN, QuotientLower, Rem);
   
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     ///                                                                                                               ///
  
positive.code: 
      class procedure Compact(var Data: TMagnitude; var Size: Integer); overload; static;
      // Resets size thus that there are no leading zero limbs.
      procedure Compact; overload;
      // Reallocates magnitude to ensure a given size.
      procedure EnsureSize(RequiredSize: Integer);
      // Creates a new magnitude.
  
negative.code: // Assumes non-negative parameters and non-negative self.
  procedure BigInteger.AddWithOffset(const Addend: BigInteger; Offset: Integer);
  begin
    Self.EnsureSize(IntMax(Offset + (Addend.FSize and SizeMask) + 1, Self.FSize and SizeMask));
  //  if Offset >= (Self.FSize and SizeMask) then
  //    CopyLimbs(PLimb(Addend.FData), PLimb(Self.FData) + Offset, Addend.FSize and SizeMask)
  //  else
      FInternalAdd(PLimb(Self.FData) + Offset, PLimb(Addend.FData), PLimb(Self.FData) + Offset,
        (Self.FSize and SizeMask) - Offset - 1, Addend.FSize and SizeMask);
    Self.Compact;
  end;
  
  