Added future, upcoming, past

Since these are open-ended ranges, a value of None can now be
returned for either start or end to represent the open range.