Hmm, I think the negative/0 check here was getting around a corner case that probably deserves more investigation.