Правильное округление дробных чисел

Как научить Delphi правильно округлять дробные числа?

function RoundEx(X: Double; Precision: Integer): Double;
{ Precision : 1 - до целых, 10 - до десятых, 100 - до сотых... }
var
  ScaledFractPart, Temp: Double;
begin
  ScaledFractPart := Frac(X) * Precision;
  Temp := Frac(ScaledFractPart);
  ScaledFractPart := Int(ScaledFractPart);
  if Temp >= 0.5 then ScaledFractPart := ScaledFractPart + 1;
  if Temp <= -0.5 then ScaledFractPart := ScaledFractPart - 1;
  RoundEx := Int(X) + ScaledFractPart / Precision;
end;
[Nomadic]