Could you just set a "non-negative" indicator in the units descriptions?  It would likely make maintenance and reasoning about code flow somewhat easier.