You're spot on. However, there are other ways to guarantee the game moves at the same rate regardless of what the frame rate is - commonly, games will measure the number of seconds each frame takes and move things based on that. This lets your game run at the highest frame rate you can get without having to cater to the lowest common denominator, and is a good idea because the frame rate can be fickle anyway (say the user is running some big task in the background).
Example:
sync on
sync rate 0 rem Frame rate uncapped
positionX# = 0.0
pixelsPerSecond# = 100.0
rem For more accuracy, check out PERFTIMER
lastFrame = timer()
do
rem Calculate how long the last frame took, in seconds
deltaSeconds# = (timer() - lastFrame) / 1000.0
lastFrame = timer()
rem Move things in the game based on that time
rem Their speed is now based on real-time seconds rather than the frame rate
inc positionX#, pixelsPerSecond# * deltaSeconds#
dot positionX#, screen height()/2
sync
loop
The has the added benefit of letting you think about movement in your game in terms of "pixels per second" rather than "pixels per frame", which is difficult to visualize.
Going a bit off-topic, but I hope it's helpful.