It does appear Sleep(1) is, very nearly, equivalent Sleep(10). I divided all my timeouts by 10, and they're not at least in the ballpark.
Sleeps longer than 10 should be reasonably accurate so there should be no need to modify or scale them. Generally just don't expect sleeps < 10 to be accurate and therefore don't use them. If your sleeps that are > 10 are wildly inaccurate then there's likely another issue somewhere.
as to isactive() sometimes
true / false works sometimes NOT
is /not may or may not work
-1/1 may or may not work
0/1 may or may not work
sometime the signal inverts sometimes not
LOL - well if you say so Terry, but I have NEVER seen isactive() fail to return true (-1) or false (0).
What I HAVE seen is functions that are documented as being boolean actually returning 0 and 1 instead of 0 and -1. Clearly there was some inconsistency in the interface implementation between the C++ "source" and the CB API. In those cases, using NOT will provide endless hours of debugging fun if you're not onto it.
Try this for your entertainment:
msgbox not 1
Perfectly logical, but a gotcha if you don't see why.
One example of a gotcha is getOEMLED. It returns 1 and 0 but how often do we see if getOEMLED(...) in code i.e. treating it as if it were a boolean function? Sure it'll work fine but then someone takes the logical next step and does a if NOT getOEMLED(...). That'll end in tears because NOT 0 implicitly casts to true BUT so does NOT 1.
isMoving() is perhaps the worst example for a few reasons. First, although it implies a boolean result it isn't (unlike most other is.... functions) so really, all the while isMoving() loops we see should really be while isMoving() = 1. Because again if you ever do a "if NOT isMoving()" it will not do what you might think. Of course isMoving()s worst "feature" is that contrary to its name it doesn't actually (exclusively) have anything to do with anything moving! Don't even get me started on isStopped().