This is a serious fault in a basic function in SQL Server; my conclusion is based on the behaviour on SQL Server of:
select ROUND(1.999, 2);
And Oracle 10g:
SELECT ROUND(0.999,2) from dual;
select ROUND(0.999, 2) from SYSIBM.SYSDUMMY1;
Only SQL Server over many versions and many years fails to return a correct result and instead fails.
This shouldn't be a trivia question but rather a serious question as to whether if SQL Server cannot do standard maths functions correctly it should be considered as a candidate tool for implementation by any organisation.
Worse - this has been know about for years, and there are no possible detrimental impacts for correcting the fault, but still Microsoft has done nothing about it.
It is failures like these that damage the reputation of companies such as the one I work for; we implement the same software on multiple database platforms and have to rely on standard sql functions to work consistently. We do test properly on the multiple platforms, but you can't test everything and why would our testing teams be looking for edge cases such as this one?