Turns out using sparse arrays is *MUCH* more efficient than filling the
array with nulls!

(Downside is we now have two meanings for 'no point', null or undefined, both
need to be checked for!)
Attempt to make sure time steps are consistent for ancient (non-existent)data