Changed how negative arguments are handled. New implementation definitely better for test cases which weren't gicing good results with previous implementation. Distinction for other test cases is less clear.