The IP address 10.16.24.100 has used more than 2 GB at 22:46 and had its speed reduced to 3 Mb/s for the remainder of the hour. At 23:00 a new hour started and thus its speed was restored. Effectively it means no more than 2 GB can be used in each hour.

Considering your requirements, you may achieve a better outcome by allowing them to use 2 GB in 2 hours, in which case it will be rolling. If an IP address has used 2 GB in the first hour, then its speed will be reduced until one hour later.

How long has it been in the Unlimited state before 07:43? Say, if the user has used 2 GB starting at 6:00, it sounds about right as the quota is rolling and 2 GB were used in 1 hour and 43 minutes. Then at 8:00 it's a new hour, so a new quota allowance start to be used.

There is no way to make it work exactly as you describe, i.e. one hour of usage followed by one hour of reduced speed, I'm afraid. This is just how the software is implemented: it allows you to set a limited of X MB in Y hours, granular to an hour.