Hola Bucanero,
Haciendo solo algunas modificaciones a mi código pude resolver el problema, en realidad fue facil partiendo del uso múltiple de trunc.
Muchas gracias por tu ayuda y por tu tiempo.
Coloco el código para que otros puedan aprovecharlo
Código Delphi
[-]
function EspecialRound(const value, FactorAprox : Currency) : Currency;
var
FactorAprox1 : real;
begin
FactorAprox1 := FactorAprox / 1000;
Result := value / 1000;
Result := Trunc(trunc(Result) + Frac(Result) / FactorAprox1) + 1;
Result := 1000 * Result - (1000 - FactorAprox);
end;