What happens when the attack speed is not at an integer multiple of a logical frame?

What we want to achieve is that it doesn’t just start logical frame 2 at 150ms just because the next thing that should be executed is located at 150ms, which would cause substantial game acceleration, and we don’t want that, we want it to jump 1 logical frame every 100ms no matter what happens, as long as there is enough arithmetic to do it, and not at 150ms because it needs to make a logical frame at 150ms, instead of jumping to logical frame 2 at 150ms because it needs to perform an action in a logical frame.

At the same time, it should make sure that each event is executed in full, it won’t change its attack rate to 1 time in 2 logical frames because it doesn’t have enough logical frames, it should attack at 150ms once, so it will attack once in both logical frames 2 and 3

What should I do? Thank you very much.