fix non-integer interval stepping

We weren't handling non-integer interval stepping correctly.  We should almost always add 1 to the number of steps except when we have an exact multiple of intervals and exclude_end is true.