The ruby BSON implementation is broken for large Dates.
The following snippet reproduces it in IRB;
ruby-1.9.2-p290 :001 > require 'bson'
ruby-1.9.2-p290 :002 > require 'date'
ruby-1.9.2-p290 :003 > BSON.deserialize BSON.serialize(t: DateTime.parse('2099-01-01T00:00:00Z').to_time)
=>
Note a year of 2099 was the parameter for serialization, while 1962 was the result after deserialization. Since both Mongo and rubys Time-class can handle 64-bit time-instances, the BSON-serialization-step should really handle it too.
As a side-note, when originally discovering this in my Mongo-app, the database actually had a correct 2099-date inserted through the ruby-driver, so I would expect the problem to be in de-serialization rather than serialization.
I have both bson, and bson_ext gems installed, unsure of which is used.