anchor.diff:      LHi16 := TUInt32(LProduct).Hi;
       Inc(I);
     end;
  -  PUInt16(Result)[I] := LHi16;
  +  if LHi16 <> 0 then
  +  begin
  +    PUInt16(Result)[I] := LHi16;
  +    // var parameter Size := I;
  +    // Size should be the fifth parameter, so it can easily be set from 64 bit code.
  +  end;
   end;
   {$ELSEIF DEFINED(WIN32)}
   asm
  
positive.code:     class function InternalDivideByBase(Mag: PLimb; Base: Integer; var Size: Integer): UInt32; static;
      // Internal function multiplying by 16 bit integer and then adding 16 bit value. Used by parser.
      class procedure InternalMultiply16(const Left: TMagnitude; var Result: TMagnitude; LSize: Integer; Right: Word); static;
      // Internal function negating magnitude (treating it as two's complement).
      class procedure InternalNegate(Source, Dest: PLimb; Size: Integer); static;
  
  
negative.code:         Exit;
        if LVal >= ABase then
          Exit;
        InternalMultiplyAndAdd16(PLimb(AValue.FData), ABase, LVal, AValue.FSize);
      end;
      Result := True;
    end;
  