My opinion is, never use 'screen fps()' for anything other then displaying frame rate on screen, it's inaccurate and only updates once every second. That command is only really for gauging approximately how fast the program is running.
DBPro cannot maintain a fixed fps, this is because the timing is based on a 1000 ticks per second clock working against a monitor with a fixed refresh rate (default 60hz), so asking for anything other then 60,30,15,etc. are guarenteed to result in problems. Not to mention that the 1000 ticks per second cannot be evenly divided into 60.
Here's a list of the approximate fps I get from different sync rates on my system:
Sync rate - FPS
40 - 32
50 - 32
60 - 64
75 - 64
100 - 128 (only at low screen res's with high refresh rates)
As you can see, my system and sync rates don't work well togethers so I always code for variable frame rates. Although most people's systems would have fewer problems, my point is that forcing fps to a certain number is not a reliable way to control the game speed.
My advice is that even though coding for variable fps using the timer is slightly more time consuming it is far more reliable, this is because instead of the program trying to force the graphics card to run at a particular speed, the graphics card is allowed to run at full pelt, while your program gets taken along for the ride.
There is another technique you could use which may prove better in some ways. The idea is that your program only updates things a certain number of times every second using fixed time step code while allowing the graphics card to run full speed. It works by keeping track ot the timer and updating the physics (and anything else) a number of times based on that. Using the 1000hz timer you could easily set the program to update 100 times per second, it counts the ticks and everytime it gets to 10 it updates everything. At slowler then 100fps this will work reasonably well, but at higher then 100 it may result in visibly jerky movement. Although most people's systems only use the default refresh rates. Here's an example piece of code:
do
timenow = timer()
timestep = timenow - timeago
timeago = timenow
inc ticks,timestep
while ticks => 10
dec ticks,10
(work your physics and game stuff here)
endwhile
sync
loop
Another option would be IanM's high frequency timer plugin, with that you can set virtually number of ticks per second, that would allow you to control the updates to almost any speed you like.
(lecture over)
I don't suffer from insanity:
I enjoy every minute of it!