It seems that the way FormatNumericUnits is currently written, the negative sign from the -0 seconds value is ultimately dropped.
We first format the hours field, which sets signDisplayed to false:
16. If hoursFormatted is true, then
a. Append FormatNumericHours(durationFormat, hoursValue, signDisplayed) to numericPartsList.
b. Set signDisplayed to false.
So then when we enter FormatNumericSeconds, because signDisplayed is false, we apply the signDisplay=never option.
It doesn't seem like there are any steps to propagate the negative sign from the seconds value to the hours value to ensure the negative sign is appended before the formatted hours string.
For example, looking at the following test262 test: https://github.com/tc39/test262/blob/61e3f5ec4d0c8d87af7d6e9b7eba4a42eb379b4f/test/intl402/DurationFormat/prototype/format/negative-duration-with-leading-zero-style-digital-en.js
It seems that the way
FormatNumericUnits
is currently written, the negative sign from the-0
seconds value is ultimately dropped.We first format the hours field, which sets
signDisplayed
tofalse
:So then when we enter
FormatNumericSeconds
, becausesignDisplayed
is false, we apply thesignDisplay=never
option.It doesn't seem like there are any steps to propagate the negative sign from the seconds value to the hours value to ensure the negative sign is appended before the formatted hours string.