15000106087 You need to return the value of the rotation before the loop. For example:

Suppose you have an animation that loops at 30f. If you want to set a certain bone to make one rotation at frame 30, you would make it reach one rotation once at a timing close to frame 30, such as 29.97, and set the key value back to 0 at frame 30 (the timing at which it loops). It is better to set the curve between the key at 29.97 to 30 as a stepped curve.
This way you will get the following results:

If you want to loop in the middle of the animation, the following curve is correct:

To place a key on such a decimal point frame, either hold down the Shift key and move the timeline bar, or enter a value directly in the current number of frames shown in the Dopesheet view and add a key there:
