After experimenting with cTSOSimulator::ClientIdle() (base+0x1ECFC in TSOSimulatorClientD.dll), basically the situation looks like dword [cTSOSimulator+0xfc] controls the number of simulation ticks per second. It should be something like 0x10. If you put in a huge value (0x00FFFFFF), then the simulation goes fast, and, if you use the cheat "sim_speed 1", it will slow down the animation, yet the NPCs will animate with very low sampling rate. The problem is that there's a count-up timer in dword [cTSOSimulator+0xcc]. When this timer reaches the value in dword [cTSOSimulator+0xfc], the simulation stops.
So, this is just an educated guess, but it sounds like sim_speed controls the speed at which ClientIdle() is called per second (the game is already calling ClientIdle several times per second without the simulator running even before you change anything)—either that, or the number of ticks per second that one call to ClientIdle simulates. But what we actually want to change is the code calling ClientIdle, because it sounds like the code is supposed to do something when the timer reaches the end (I'm guessing what it's supposed to do is wait a certain amount of time) and reset the timer, but it's currently not doing it.