These files show the behavior of an animation for different framesPerSecond values set, especially edge cases.
The animated prim has time samples from 0 to 100:
double3 xformOp:translate.timeSamples = { 0: (0, 0, 0), 100: (100, 0, 0), }
framesPerSecond = -1 : framesPerSecond_-1.usdaframesPerSecond = 0 : framesPerSecond_0.usdaframesPerSecond = 1 : framesPerSecond_1.usdaframesPerSecond = 24 : framesPerSecond_24.usdaframesPerSecond = 48 : framesPerSecond_48.usdaframesPerSecond = 100 : framesPerSecond_100.usdaframesPerSecond = 101 : framesPerSecond_101.usdaframesPerSecond = 128 : framesPerSecond_128.usda