Yeah, but for every mouse input read you only get HALF of the wheel values at the same time. The wheel must be read TWICE as many times as the input and MUST LAG!
No, I don't usually put delays in a mouse read loop or use _MOUSEINPUT TWICE and that WOULD cause you to miss OTHER READS! It just ILLUSTRATES what is happening internally!
TWICE the reads is a BUILT IN DELAY!
As for the _LIMIT, that was ALREADY IN Galleon's code! WHY WOULDN'T you use _LIMIT?
I don't see a need to read a value just to RESET it! OF COURSE THE CODE IS STUPID! But so is the internal code. Reset it any way you want, but give us just the clicks. We don't need to VERIFY that the relative value was zeroed out!
Where else COULD you reset the value except after a read? That's the problem! You can't reset it after each _MOUSEINPUT...

Right now that is what you are doing HALF the time!
THERE IS NO DELAY IN MY CODE EXCEPT FOR THE _DELAY SO TAKE IT OUT and THEN compare the two silly! It WILL be harder to see!
DO: _LIMIT 10 '<<<<<<<<<< increase if you must
i = _MOUSEINPUT
Scroll = _MOUSEWHEEL
PRINT Scroll
i = _MOUSEINPUT '<<<<<< comment out to see the difference in lag
LOOP UNTIL INKEY$ = CHR$(13) ' press Enter to quit
Comment out the second _MOUSEINPUT and see HOW LONG it LAGS BEHIND USER INPUT!
Presently we can read TWICE the X and Y coordinate values in the same routine.
It would seem to be relatively SIMPLE to clear the value AFTER it is read INTERNALLY! SUBs and FUNCTIONs do it automatically...

I see little reason for somebody to want to read it and get the same results twice in a loop.