Doesn't it do that already (please read the last paragraph before saying it's framerate dependent)?
cap = F1_0/Framerate_cap;
if (Frametime < cap) {
thistime = cap - Frametime;
Sleep( DWORD(f2fl(thistime) * 1000.0f) );
Frametime = cap;
thistime = timer_get_fixed_seconds();
}
...
Last_time = thistime;
flFrametime = f2fl(Frametime);
This is in game_set_frametime(). flFrametime is what's passed around the game. There is a little more to it than that obviously but that's the gist of it. The Sleep() command is the only thing that's different from what you've got and it's what keeps the game processing within the cap, otherwise the cap doesn't mean much. The game would process frames as quickly as it possibly could and the capped frametime would only take affect when it's used to determine weapon damage, accuracy and a few other variables. anis would play incorrectly, sound sync would be off, etc.
This is framerate dependent obviously but with a minor change or two could also produce an additional framerate independent variable. I guess the problem I can't seem to get around is that if game processing is kept under the cap (with Sleep()) then would an independent frametime actually have the desired effect?