Hi. Since time_duration uses <long> to represent each of the fields (H:M:S:FS), I should be able to add any hour offset to a ptime, as long as the resultant ptime is inside the date/time range representable by boost? With the date ranges of boost being 1400-Jan-1 00:00:00 -> 10000-Jan-1 00:00:00, the number of hours between these dates is (very roughly!) 7.534E7. This is less than the <long> limit on my system, which is +/- 2.147E9. That is good. So; doing the following: ptime t_max( date(10000,Jan,1) ); ptime t_min( date(1400,Jan,1) ); time_duration td = t_max - t_min; std::cout << to_simple_string( td ) << std::endl; should produce something like : 7.534E7:0:0 or if you want to write it out: 7533600:0:0 not? Instead; the output I get is : 224112:19:12. This corresponds to a timespan of roughly 25 years which means I just ran into some overflow/underflow problem somewhere. What gives? What time range is supported by time_duration if it does not use the <long> limits? I have difficulty deducing this information from the header files, the source for the lib is not too helpfull either! What am I missing here? Greetings, Andre.