I needed something to convert the difference between two xtime values to microseconds, so I looked at the to_microduration function in time_conv.inl and I guess that there is a bug there. The if should be: if (boost::xtime_cmp(xt, cur) <= 0) microseconds = 0; else ... In facts, the intent of the if condition seems to be avoiding negative return values, as for the to_duration function. Current code is: inline void to_microduration(const boost::xtime& xt, int& microseconds) { boost::xtime cur; int res = 0; res = boost::xtime_get(&cur, boost::TIME_UTC); assert(res == boost::TIME_UTC); if (boost::xtime_get(&cur, boost::TIME_UTC) <= 0) microseconds = 0; else { microseconds = (int)((xt.sec - cur.sec) * MICROSECONDS_PER_SECOND) + (((xt.nsec - cur.nsec) + (NANOSECONDS_PER_MICROSECOND/2)) / NANOSECONDS_PER_MICROSECOND); } } Paolo