Animation: create a rotation around the object z-axis instead of global z-axis
Set  Rotation type to ZXY Euler, then the animation around the local axes works like a charm.



Here is an Example Blend File for inspection: http://www.pasteall.org/blend/31685