allows negative numeric arguments

This PR completely rips the code from #329 because I'd love to use it. Thanks to @jeromedecoster for this!