I am probably wrong but this could also be a processor limitation. When functions, in any language I ever heard of, return a value, it is returned in the AX, or EAX registers of the processor. This can be a pointer, a number, a character, or something else, but it will be no more than 32 bits. If the function returns an integer, not a pointer to an integer, the largest value it could return is 4,294,967,295. The number of milliseconds in 49 days is 4,233,600,000. Most people will not want to use non-standard functions because, if you run the program on a windows platform that the function is not supported on, then the program either won't start, or it will perform an illegal operation. If M$ decided to return an integer instead of a pointer to an integer this does become a windows problem, but it is one that cannot be changed. Since M$ decided to return this value as an integer that represents milliseconds, the longest it will go is for 49 days. I know that there are larger integers in most common OOP languages, but things like the int64 are pointers to larger values, or they could possibly return the value in EAX:EDX. I know that some assembly commands return the values in EAX:EDX, but C/C++ does not, it just returns a value in the EAX register, so most likely that is a pointer to an integer.