ok I wrote my own rounding function in accordance with the tax interpretationYour function should probably be symmetrical vs 0 so you might try :
function TaxRound(Value: Double): Integer; begin if Frac(Value) = 0.5 then Result := Trunc(Value) + 1 else Result := Round(Value); end;
wrong.
you multiply by 10.000, leave out the fraction and then divide by 10.000.
And, again, rounding with currency is fixed and it does not matter if it is 32 or 64 bit. That only happens when you are not careful and mix currency with double or single.