 when this function is called recursively.
 
 When called interactively, if a region is selected SECONDS is
-extracted from that, else the user is prompted to enter those."
+extracted from that, else the user is prompted to enter those.
+
+With \\[universal-argument] prefix, copy the returned string to
+the kill ring.
+
+With \\[universal-argument] \\[universal-argument] prefix, replace
+the selected region with the return value."
   (interactive)
   (let ((inter (called-interactively-p 'interactive)))
     (when inter

                    (setq str (concat str val-str))))
                ;; (message "debug: %S" time)
                (if inter
                    (message "%0.2f seconds → %s"
                             seconds
                             (string-trim (replace-regexp-in-string " +"  " " str)))
                  (string-trim-right str)))))
           (time (cond
                  ((>= sec DAY)          ;> day
                   (let* ((days (/ (floor sec) DAY))

            (lambda (time inter)
              "Return string representation of TIME.
TIME is of the type (DD HH MM SS), where each of those elements
are numbers.  If INTER is non-nil, also echo the time string in a
well-formatted manner."
              (let ((filler "    ")
                    (str ""))
                (dolist (unit '("d" "h" "m" "s"))
