Cool, the comparison operator logic looks very similar to mine:
I believe the ideal design is the following type hierarchy:
But in the interests of pragmatism, I think this one can be made to
advantage to this is that we don't have to switch everything over to
using a new derived type--just use the normal datetime for the majority
of cases where we don't need inifinity dates.