This seems easier to meCREATE FUNCTION dbo.fnGetRoundVal
(
@Amt DECIMAL(19, 6),
@RoundTo DECIMAL(19, 6),
@RoundType TINYINT
)
RETURNS DECIMAL(19, 6)
AS
BEGIN
RETURN (
SELECT CASE
WHEN @RoundType = 1 THEN @Amt + Up
WHEN @RoundType = 2 THEN @Amt - Down
WHEN Down < Up THEN @Amt - Down
ELSE @Amt + Up
END
FROM (
SELECT @Amt % CEILING(@RoundTo) - @RoundTo + CEILING(@RoundTo) AS Down,
@RoundTo - @Amt % CEILING(@RoundTo) AS Up
) AS d
)
END
N 56°04'39.26"
E 12°55'05.63"