float - the rounded value, if snap is positive, and val otherwise
rounds the value val to the closest multiple of snap (snap can only be posiive)