SQL Server 2008 e milissegundos

No SQL Server 2008, por que as seguintes consultas retornam o mesmo valo

-- These all return 2011-01-01 23:59:59.997
SELECT CAST('2011-01-01 23:59:59.997' as datetime)
SELECT CAST('2011-01-01 23:59:59.998' as datetime)

E por que a consulta a seguir é arredondada para o dia seguinte?

-- Returns 2011-01-02 00:00:00.000
SELECT CAST('2011-01-01 23:59:59.999' as datetime)