Yes, this is the sort of thing I expected. abs(x) can only be positive. If you get any result from `abs(x) - y` where `y` is not positive, it will be incorrect nonsense. 

I'd be a lot happier here if this else branch were removed.