The thing is, the game does not allow for any positive value of fatigue under 200 (50 for all other actors). This means as soon as the player recovers from negative fatigue, his fatigue immedaitely jumps to 200. So there is never any any worry about the player having anything but a 200 fatigue, if he is up and moving about. I spent a bit of time checking this out a while back for a scripted scene I made for my mod. Try it yourself. Using the console, damage the player's fatigue by 50 points then check his fatigue, it will still be 200. Damage it by 199 and check it, it will still be 200. You may have to wait a frame between the damaging and checking, but it recovers all instantly. Then damage it by 210. Watch him fall to the ground and get back up in 10 seconds, check his fatigue then, its 200.
Effectively that's how it works yes, but it's not the fatigue stat itself that can't be positive and less than 200, it's the damage modifier that can't change the stat unless it's more than the base amount. Fatigue.. the stat itself can be anything depending on how it's modified. The base geck number is added to the derived stat, which is made up of all the applicable modifier amounts, and that becomes the usable base number. However, my point was that the said "200" value it jumps to is not a fixed constant. It's only 200 (the geck value) if its derived stat is untouched and default. All it takes is a script from someones mod to call player.modav fatigue XXX (for any reason) and now that derived stat (fatigue in this case)
doesn't jump to 200, it jumps to 200 plus whatever XXX was. Additionally, it
stays that way (until a modav -XXX is called from a script) because the
script modifier has been altered and can ONLY be changed back by a script (the game cannot do it). So if XXX was 100, 300 is now what it jumps to if/when the damage modifier is not in effect (preserved base amount + different modifier value). At 300, damaging fatigue 210 for a 10 second knockout will have no effect at all. If that script originally called a modav fatigue -XXX instead, and XXX is the same 100, it will jump to 100 instead of 200.. which then makes damaging fatigue 210 equal 110 seconds of wait time. See what I mean? The base editor value, damage modifier, script modifier, game modifier, and magic modifier (that all of 'em?) all affect whether or not 200 is the number you start with. Even careless console use can throw that off, I've done it *holds hand up*, and learned the hard way. One can still reliably use the "counting down of negative numbers" as a sort of timer like you say, but I would be sure to include a 'variable = player.GetAV fatigue + 10', then damage the variable amount. That way, if the starting stat isn't what it should be for whatever reason, you'll still hit your target number and get good results.