return 0 if negative