Hello, I’m having issues with wrapping of boost::time_duration derived types. I can’t find anywhere in the documentation for when the time_duration types are supposed to wrap around. I have attached some sample source code below. The output is: SecCount = 80000000 is OK. Strange Stranger Problematic SecCount = 80000001 is STRANGE. I expect the output to be SecCount = 80000000 is OK. SecCount = 80000001 is OK. The problem we ran into had to do with seconds and milliseconds having different maximum permissible values. Any idea why boost::posix_time::seconds goes negative at 0x80000001 while milliseconds is not until much later? Thanks, Justin // // test.cpp // #include <boost/date_time.hpp> #include <iostream> using namespace std; using namespace boost::posix_time; //------------------------------------------------------- //------------------------------------------------------- void Strange(long SecCount) { long MilliCount = 1000 * SecCount; bool IsStrange = false; if (SecCount >= 0 && seconds(SecCount).is_negative()) { cout << "Strange" << endl; IsStrange = true; if (!milliseconds(MilliCount).is_negative()) { // If seconds wraps, why doesn't milliseconds? cout << "Stranger" << endl; IsStrange = true; } } if (seconds(SecCount) != milliseconds(MilliCount)) { cout << "Problematic" << endl; IsStrange = true; } if (!IsStrange) { cout << "SecCount = " << SecCount << " is OK." << endl; } else { cout << "SecCount = " << SecCount << " is STRANGE." << endl; } } //------------------------------------------------------- //------------------------------------------------------- int main() { cout << hex; Strange(0x80000000); Strange(0x80000001); return 0; }