| 
					
				 | 
			
			
				@@ -2590,10 +2590,15 @@ not overwrite the stored one." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				   duration-output-format) ev)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (or (fboundp 'calc-eval) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	      (error "Calc does not seem to be installed, and is needed to evaluate the formula")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	  (setq ev (calc-eval (cons form org-tbl-calc-modes) (if numbers 'num)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  (setq ev (if (and duration (string-match "^[0-9]+:[0-9]+\\(?::[0-9]+\\)?$" form)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		       form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     (calc-eval (cons form org-tbl-calc-modes) (if numbers 'num))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		ev (if duration (org-table-time-seconds-to-string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				 (string-to-number ev) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				 duration-output-format) ev))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 (if (string-match "^[0-9]+:[0-9]+\\(?::[0-9]+\\)?$" ev) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				     (string-to-number (org-table-time-string-to-seconds ev)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				   (string-to-number ev)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				 duration-output-format) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     ev))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(when org-table-formula-debug 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (with-output-to-temp-buffer "*Substitution History*" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3288,8 +3293,10 @@ For example:  28 -> AB." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Convert a time string into numerical duration in seconds. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 S can be a string matching either -?HH:MM:SS or -?HH:MM. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 If S is a string representing a number, keep this number." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  (let (hour minus min sec res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (cond 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (if (equal s "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    (let (hour minus min sec res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (cond 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      ((and (string-match "\\(-?\\)\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\)" s)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (setq minus (< 0 (length (match-string 1 s))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	    hour (string-to-number (match-string 2 s)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3307,7 +3314,7 @@ If S is a string representing a number, keep this number." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	  (setq res (- (+ (* hour 3600) (* min 60)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	(setq res (+ (* hour 3600) (* min 60))))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      (t (setq res (string-to-number s)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    (number-to-string res))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      (number-to-string res)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 (defun org-table-time-seconds-to-string (secs &optional output-format) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   "Convert a number of seconds to a time string. 
			 |