$opt{'sum-format'} = sub { sprintf '%.8g', $_[0] };
$opt{'calc-format'} = sub { sprintf '%*.*f', 0, 2, $_[0] };
$opt{'value-format'} = $opt{sexagesimal} ? sub {
- my $s = $_[0] + .5;
- sprintf('%d:%02d:%02d', $s/3600, $s/60%60, $s%60);
+ my $s = abs($_[0]) + .5;
+ sprintf('%s%d:%02d:%02d', $_[0] < 0 && '-', $s/3600, $s/60%60, $s%60);
} : $opt{units} && sub {
my $unit = (
log(abs $_[0] || 1) / log(10)
--- /dev/null
+\e[90m0:00:00\e[0m -
+\e[90m24:00:00\e[0m ---\e[36m=\e[0m--
+\e[32m111:11:11\e[0m long ---\e[36m=\e[0m------------------------
+
+\e[90m-0:00:00\e[0m -
+\e[90m-0:00:01\e[0m -
+\e[90m-0:00:01\e[0m -
+\e[90m-0:00:02\e[0m -
+\e[31m-2:02:02\e[0m
+\e[1m479345.21\e[0m total in 8 values over 9 lines (\e[31m-2:02:02\e[0m min, \e[36m16:38:38\e[0m avg, \e[32m111:11:11\e[0m max)