Apply the "ties to even" Midpoint rounding rule for the ROUND function
The Transact-SQL ROUND function does not behave consistently with the IEEE 754 rules used in VBA and .NET. When the number to be rounded falls exactly halfway between the two closest values that have the desired precision, ROUND always rounds up. Whereas in the IEEE standard and with the default MidpointRounding option of the Math.Round function in .NET, the default behavior is to round mid-point values to the closest even number, either up or down ("round to closest, ties to even").
Example: Transact-SQL ROUND(3.135, 2) returns 3.14 (correct), but ROUND(3.145, 2) returns 3.15 (incorrect, it should also be 3.14).
The Transact-SQL function creates an upward bias in rounding, which is problematic for financial application. It also creates a discrepancy with values calculated using rounding in .NET or other software. For example, an accounting auditor using Excel to aggregate many transactions that are each rounded to the nearest cent, may see a slightly lower dollar total than a Transact-SQL query shows.
Request: Change the "function" argument of ROUND to allow selecting the midpoint rounding rule. Apply "ties to even" by default and when "function" is zero, keep the truncate option for 1 or any positive value (for backward compatibility), apply "away from zero" (current rounding up) for -1.