diff --git a/nselib/stdnse.lua b/nselib/stdnse.lua
index 0d9d48c7e..0e6f8bc5c 100644
--- a/nselib/stdnse.lua
+++ b/nselib/stdnse.lua
@@ -566,20 +566,25 @@ end
-- in milliseconds, this is 1000 for instance. Default: 1 (seconds)
-- @return The time interval in string format
function format_time(interval, unit)
+ local sign = ""
+ if interval < 0 then
+ sign = "-"
+ interval = math.abs(interval)
+ end
unit = unit or 1
local precision = floor(math.log(unit, 10))
local sec = (interval % (60 * unit)) / unit
- interval = floor(interval / (60 * unit))
+ interval = interval // (60 * unit)
local min = interval % 60
- interval = floor(interval / 60)
+ interval = interval // 60
local hr = interval % 24
- interval = floor(interval / 24)
+ interval = interval // 24
- local s = format("%dd%02dh%02dm%02.".. precision .."fs",
+ local s = format("%.0fd%02.0fh%02.0fm%02.".. precision .."fs",
interval, hr, min, sec)
-- trim off leading 0 and "empty" units
- return match(s, "([1-9].*)") or format("%0.".. precision .."fs", 0)
+ return sign .. (match(s, "([1-9].*)") or format("%0.".. precision .."fs", 0))
end
--- Format the difference between times t2 and t1