This is the root of the "reservation too long" bug. When `Reservation#start_in_grace_period`changes the `#reserve_start_at` it makes it so `at` in `#in_grace_period?` will always be equal to `grace_period_end`. That's fine, but the `at <= grace_period_end` comparison was failing because `at` was a few fractions of a second greater than `grace_period_end`, which is calculated off the previously stored `reserve_start_at`. Literally fractions of a second. I could only see this bug when I called `#to_f` on the timestamps used in the above comparison. We don't need to be _that_ precise -- comparing on ints should be fine. The bug could rise again if it takes more than a second to get from `#start_in_grace_period` to here, but if that's the case there are bigger problems.