You're correct but you have an off by 1 error.
First, the genie grants the wish.
NumWishes=0;
Then, having completed the wish, the genie deducts that wish from the remaining wishes.
NumWishes--;
And to complete the thought,
Lastly, the genie checks if the lampholder is out of wishes
If(NumWishes==0) {...}
(255==0) evaluates to False, so we fall past that check.