First, allow me to apologize for my ignorance. There is obviously a very simple thing that I'm just not seeing. To me, it looks as if the loop checks the variable and if false, runs a sequence that changes the variable to true at the end. So, one change. But it's clear I'm mistaken.
Believe me, I know how you feel (BTDTGTTS)
runs a sequence that changes the variable to true at the end.
The problem is that the change to true, or more exactly flipping the value, does not happen at the end of the sequence, but within the for loop that moves the servo, so it happens many times instead of once. Ironically, if you had set it to true explicitly it would have worked.