get_keyframe_extents() would add an extra frame in case of mono-key fcurves in selected set... Now do the 'not same start/end frames' check later, and also use floor/ceil instead of round (we want to start at frame 3 if first key is at frame 3.8, reversed-same goes for end frame).