danbl - the function might keep on working but the odds are you will run into this again, so I'm going to give you the theory on what happened.
Date/Time fields are DERIVED as opposed to NATURAL quantities. DOUBLE is a natural format. Date/Time is a "cast" (alternate viewpoint) of a DOUBLE. It is a "timeline" of days and fractions thereof since the last day of 1899. So Jan 1 of 1900 is day 1. When you compute time fractions in Date/Time variables, the moment you exceed a total of 1, you have changed a date, in effect.
When adding/computing elapsed times, you should NEVER use a date/time field. Use a natural DOUBLE field instead. This might necessitate some gyrations with functions to get the accumulated time to display correctly, but the result will be worth the learning experience.
Hint: Once the time has been added up, split it into integer and fractional parts, then convert the integer to ... an integer number of days. Convert the fraction as a number of hours, minutes, and seconds.
Or just count the days and fractions thereof without regard to the time formatting functions at all.