If you look at your updating code, you can see why you need to add updateTime to the time you calculate. Since you loop until [icode](timeGetTime() >= gameClock)[/icode], the value of gameClock will be more than the current time. If you don’t add updateTime to the value, the value [icode](timeGetTime() - gameClock)[/icode] will be negative! To be precise it will be between -updateTime and 0. If the update was instant, gameClock will be exactly one frame ahead, so the interpolation value becomes -1. If updating took a long time, it’ll approach 0. Therefore you will want to add updateTime to it before dividing to bring it to 0.0-1.0 instead.
A note about the interpolation though: Remember that the update loop only updates 5 times at max. If the game freezes for a second or so, it’ll behave a bit weirdly. In short, the game will attempt to show an extremely extrapolated view of the game since [icode](timeGetTime() >= gameClock)[/icode] will be extremely large and the “interpolation” value will be over 1.0. Since this might make the game look extremely weird (things continue through walls and so, basically the same popping you got before when movement changed but 10x worse) while the game catches up, it might be a good idea to clamp this value to 1.0 to prevent potentially inaccurate extrapolation. Just an idea though, depending on the game, the extrapolation could in the case of linear movement completely hide the fact that it’s still catching up since the extrapolation is accurate. I guess this is kind of a minor detail since if your game freezes up for a long time you’re kind of having more severe problems than the interpolation not being 100% accurate. =S