This applies a relatively simple solution for fixing some unintuitive cases in the unit handling code.
Currently entering -1m50cm evaluates to -0.5m, and similarly 1'6" evaulates to just half a foot.
So effectively there's an implied + just between the numbers, which is quite confusing.
This works by adding parentheses so the negative distributes to the block of values before the next operator.
|-1m50cm + 1m -2m50cm||-(1m50cm) + 1m -(2m50cm)|
|-4m + 0.5 / -1.1||-(4m) + 0.5 / -(1.1)|
|-4m + 0.5 / -1.1 + -7m50cm * 3||-(4m) + 0.5 / -(1.1) + -(7m50cm) * 3|
|-5m50cm + 1m * 4 - sin(6)m + 6m50cm - 8m70cm||-(5m50cm) + 1m * 4 - (sin(6)m) + 6m50cm - (8m70cm)|
|-18 m * -17cm||-(18 m) * -(17cm)|
I don't see much of a downside to this, especially because it's a contained step and doesn't touch any of the other unit handling code.