Problem with bone animation with 3D cursor as pivot
This is the way animation work when you add a keyframe you store the variables values (loc, Rot, Scale) at that time, and when you play the animation blender try to interpolate ( guess ) the values of the variable (between keyframes ) depending on the last and next value and the type of interpolation used (this can be seen in the F-curve )



so whatever happens between keyframes is lost and new value will be calculated



in this case of the bone 


the location of the bone is the location of its head
the bone will rotate around its head


in this example i keyframed the first and last states only :


the result motion :

the bone will follow straight path from the first pose to the last (blender can't  regenerate the original motion from those two states only) while rotating around its head 



To prevent this you can :


add more intermediate keyframes.
or use an empty as a parent at the center of rotation.
or use curve as guide for the motion