I'm trying to get a player to rotate 90 degrees over 4 equal increments by pressing a key only once. The end result however, is either a full 90 or 22.5 degree turn.

if (key_a == 1) //key_a is pressed

{ while (key_a == 1) //while pressed
{wait(1);} //wait a frame
while (my.pan <= 90) //key_a is released and action is taken
{my.pan += 22.5;} // while my.pan <= 90, increase angle by
wait(1)} // 22.5 then wait a frame
}