Paul Stansell <paulstans...@gmail.com> writes: > Hello, > > I noticed a case where the sum of two times in a table does not give > the correct answer. > > To see this, create an org file with the following lines: > > | 0:00:31 | > | 0:00:30 | > |---------| > | | > > Open it and type C-+ C-y in the empty cell of the table. The answer > inserted is 0:01:00 instead of 0:01:01. >
I think you mean C-c +. The problem is that these things are calculated as decimal hours, using floating point arithmetic and you get truncation towards 0 when the value is printed out as an integer. The format in org-table-sum is (format "%d:%02d:%02d" h m s) but s is 0.9999... and it gets formatted as 0. It might be better to use (format "%.0f:%02.0f:%02.0f" h m s) i.e. as floating point with no places after the decimal point (in which case the decimal point does not seem to be output). But there may be other problems that I have not thought of. It might be even better to round the floating point number to the nearest integer and use %d formats instead: (format "%d:%02d:%02d" (round h) (round m) (round s)) -- Nick