OK, quick fix for the head rotation routine. This is probably how it should've been done in the first place, but I don't have my head 100% wrapped around the difference between Rot and ObjRot (One rotates the object around the world's axis and one rotates around the object's axis; but one rotates the object's axis orientation too).
To start off, in the table, Instead of changing the Rotation and Transposition of the RotX, change the ObjRotX. This will look like it's having the same effect, but this actually rotates the object's axis orientation as well so that the Y axis is always sticking straight up out the top of his head.
Next, go through the code and replace every ObjRotZ with ObjRotY. You could do a Replace (Ctrl+H), it should replace ~32 occurrences as the head animation code is the only place that use these variables. These should all be in the HeadTurnerOn_Timer and HeadTurnerOff_Timer routines, somewhere around lines 527~569.
Now I'm going to work on the arms a bit. I don't know how much "animation" to do. As Dark mentioned, they only move ~30 degrees and they're as fast as a flipper (with less range of motion). I'm thinking, instead of incrementing the rotation of the arms, just setting the rotation for a second then moving it back. If you guys really want an animation, I could work on it, but I really don't think you would see it anyway. Take for example the lamp on the most recent TOTAN; when you hit it full on, the very next frame of animation is many degrees away from the initial position, but as it slows down, you can see just how smooth it is. Because Frank's arms are moving so fast for such a small distance, I don't think you can really see it.