I got this using the less accurate timing function as you told me (without VSync).
If SetFramerateLimit(20), then FPS = 19.
(19/20 = 0,95)
If SetFramerateLimit(30), then FPS = 25.
(25/30 = 0,8333333333333333)
If SetFramerateLimit(60), then FPS = 50.
(50/60 = 0,8333333333333333)
If SetFramerateLimit(100), then FPS = 100.
(100/100 = 1)
If SetFramerateLimit(130), then FPS = 100.
(100/130 = 0,7692307692307692)
If SetFramerateLimit(150), then FPS = 100.
(100/150 = 0,6666666666666667)
If SetFramerateLimit(200), then FPS = 100.
(100/200 = 0,5)
...
Hmm, I can't see any pattern here. It just gets stuck at 100 FPS. If I don't put any SetFramerateLimit my FPS goes to 250 more or less.
Think that Ogre's implementation works fine? I never tried it!