I'm using frame based with TTimer, with interval somewhere between 17-50. As long as render time stays under the tick time there shouldn't be lag with any timer unless the timer itself is bad built. If some insane cpu intensive process takes over for 2 seconds you need to execute all 2000 milliseconds worth of frames (or pause game when it goes inactive). QueryPerformanceCounter or GetTickCount help with those calculations.