diff --git a/evaluate_expression.go b/evaluate_expression.go index 0abadc7..72e1ca1 100644 --- a/evaluate_expression.go +++ b/evaluate_expression.go @@ -77,13 +77,12 @@ func (self *_runtime) evaluateUnaryOperation(node *_unaryOperationNode) Value { return toValue(targetValue.toFloat()) case "-": value := targetValue.toFloat() - if value == 0 { - if math.Signbit(value) { - return positiveZeroValue() - } - return negativeZeroValue() + // TODO Test this + sign := float64(-1) + if math.Signbit(value) { + sign = 1 } - return toValue(-value) + return toValue(math.Copysign(value, sign)) case "++=": // Prefix ++ resultValue := toValue(+1 + targetValue.toFloat()) self.PutValue(target.reference(), resultValue)