Maybe, you forget

ent_animate(me,NULL,0,0); // reset all bones

as in the example?

When you dont reset your bones, your animations add up over time and give strange results.

Another possibility is that you have too few frames in your animation, interpolating means inbetween values from frame to frame, for instance if you rotate something and have one frame only every 90 degrees then interpolation will look wrong.