I like Euler rotation based on degrees so I can keyframe an animation of a large number of degrees, like 1000, and get multiple full 360-degree revolutions on the object for purposes of setting it spinning, etc.

However I'm at a point now when I was working on something that involved a lot of consecutive animations among two different axes that I think I'm seeing the effects of gimbal lock. When I perform one of the chained animations, my object keeps flipping 180 degrees after it completes a 90-degree rotation. Does this sound like gimbal lock? It only happens after other prior and successful rotations along different axes.

In any case, I tried switching to Quaternions but it appears that quaternions aren't suited for this spinning effect, since they just get you an orientation and they treat a multiple of 360 as 0 using this:

Code :
template <typename T>
 inline QuaternionT<T>  QuaternionT<T>::CreateFromAxisAngle(const Vector3<T>& axis, float radians)
 {
QuaternionT<T> q;
q.w = std::cos(radians / 2);
q.x = q.y = q.z = std::sin(radians / 2);
q.x *= axis.x;
q.y *= axis.y;
q.z *= axis.z;
return q;
}

Is it possible to get more than 360 degrees of rotation from a quaternion technique?