didnt read through all the posts but heres my take:
-rule out the pain
-Begin to fix this problem on the ground, if your lunging him and he bigins to come towards you, either use the whip or excess lunge line to swing/throw at him. Also, you can try raising your hands to look more intimidating/ your in charge.
-When your ready to move into the saddle, work on flexing at the whithers. When he does this easily, you can use it to fix him when he begins to buck. Disengaging the hips also is a great key to a situation like this