now with optional kwarg allow_negative
added test of new kwarg