I recommend animating the Speed Factor value not the Frame Number. If you animate the frame number then you have to keep track of what frame you are up to. And you would have to generate an f-curve angle that constantly progressed at 1 frame per frame upwards.
Using the Speed Factor however you just animate the playback speed and ignore the Multiply Speed (in fact it can't be animated) which should be left at 1.00 (unless you want a global speed change for the clip).
In the example above, the strip begins playback at full speed or 100%, or Speed Factor 1.00. Then when I want the video to slow down I place a new keyframe with the same value 1.00. This acts as a Hold value, so the media plays full speed up to this point.
Then I place a new key frame and makes its Speed Factor 0.00 or 0% speed. This pauses the video. If I move the 0% keyframe to the right, I create a slope in the f-curve, this is the deceleration, the steeper the slope the faster the deceleration. A vertical slope is the same as pressing pause.
The problem with this approach is that it is very difficult to land at exactly the right frame for your pause. That is why you may want to use the constant slope style of Frame Number.
In the Frame Number example notice that the curve must also be a vector or straight line, as a bezier curve will generate ramping that you might find undesirable (odd frame duplication).
Notice that I have placed a keyframe at the first frame and the end frame of the same values, 0 - 803.
To make a pause hold , you need to split and slide this f-curve so that its angle does not change. In this case I selected the middle keyframe (which I made at the exact frame that I wanted) and the last keyframe, then duplicated them and slid the right. I then deleted the first end keyframe.