When you test the code, you will see it work as expected: You have two blocks of Rotate dials, which rotate about different centers. This tutorial uses the word "Poser Origin" for the official origin, which is defined in the Joint Editor, and stored in the "origin" line of the code. The word "Default Origin" denotes the primary origin at the center of the scene (x=0, y=0, z=0). When you set for example the zRotateA dial of the arrow prop, the arrow rotates around the Default Origin at the bottom end. zRotateA is evaluated prior to the OffsetA channels, so the Poser origin data is not yet activated. When you set the zRotateB channel, the arrow spins around the Poser Origin at the upper end. zRotateB is evaluated after the OffsetA's, so the Poser origin data is activated, and puts the center of rotation to x=0, y=1, z=0. Can you figure out what will happen, when you place the RotateA channels after the closing OffsetB channels? According to the script execution order, the RotateA channels should rotate around the center of the scene in this configuration, because the Default Origin is already restored (by the OffsetB channels), when the RotateA channels are evaluated.