upper_bound() returns the first element that is **greater** than
the given value. So during reverse playback we need the value
before that.
Likewise for forward playback, lower_bound() returns an iterator
pointing to the element before the one that need to be played.