The answer came to me in my sleep, and I'll post it here:
The clue was, indeed, my comment:
When control returns to the calling program, Hint still knows what it should be (2) but fRun has lost its mind. Instead of holding a value of 12, its a long, meaningless string (-2147348), which, oddly...