I have made a patch to make ML recompute the timer when switching recording mode to better match the integer frame rate then. It includes also updated safe frame rate limits (allowing frame rate down to 2 and resolving LV restart with higher frame rates and 24+fps in zoom mode).
The exposure changing in 1080p is probably caused by the NTSC computation or use of 120hz timer what doesn't go along with the msleep(1000) command in fps_task(). I think, it might be also the cause of the irregular exposure change in HDR video, although Alex was talking about fixing some addresses. I haven't found the right value for msleep(), however.
There must be a Canon routine overriding those timers which runs only when recording - in that case, we could simply disable it for fps override or alter it for use with HDR video as it is probably called when the fps timer expires (reason why almost every frame in HDR video is taken with normal exposure and only a few are under/overexposed - well, that might mean that it overrides also shutter, iso etc.). Anyway, I said "simply" but this would need a FW hack, pretty clearly camera specific and that's not the right approach, I guess.
And, well, the help string for FPS override says "forces shutter at 1/fps" ..is it what it is really supposed to do as the shutter value in ML bottom bar stays unchanged or, in other words, wrong, Alex?