All you objects should be updated based on aElapsedTime. The overall effect is that your simulation will be be updated at a know and predictable rate while the game loop can update as fast as the host machine can process the loop. If you you need to do timing based on a specific fps independent of the current simulation rate then just use TPGTimer.FrameSpeed which allows you to specify a specific fps independent of the simulation rate. What your doing is decoupling rendering from physics. The extra cycle per frame on faster machines will have no notable effects on your simulation while generating smoother graphics and more cycle can be devoted to AI and other processing. On slower machines, if you keep simulation a magnitude lower than the refresh rate of your monitor, then the frame can drop without any noticeable effects.

Any way if what your trying to do is working then keep going, but keep in mind what I've outlined as the proper way of using frame-based timing in PGE.