toFixed converts a number to string, not a number. So the -0.00 you are seeing is a string. Its the result of converting
19.99923-20 // which is about
-0.0007699999999992713  // in internal representation
to a string using the toFixed method in ECMAscript standards, which initialises the result to "-" for negative numbers and proceeds to convert the absolute (positive) value of the number being converted.
Converting the string "-0.00" back to a number with either parseFloat("-0.00") or Number("-0.00") returns a positive zero number representation (javscript stores numbers  using the IEEE 754 standard for double precision float representation, which does have a negative zero value, but it's not the problem here.)
Looking at how toFixed works suggests the only problem is with a "-0.00" result, which can be checked using string comparison:
 var number = 19.99923-20;
 var str = number.toFixed(2);
 if( str == "-0.00")
     str = "0.00";
Alternatively you could consider using a conversion routine which never returns a negatively signed zero string such as:
function convertFixed( number, digits) {
    if(isNaN(number))
        return "NaN";
    var neg = number < 0;
    if( neg)
        number = -number;
    var string = number.toFixed(digits);
    if( neg && Number(string) === 0) // negative zero result
        neg = false;
    return neg ? "-" + string : string;
}