i would quite like to know how on earth your getting it to return 8.
its only returning either $celi or $floor of your passed parameter (in this case 4.6)
PS, would other people check this works:
alias SetWholeNumber !return $iif($gettok($1,2,46) >= 5,$ceil($1),$floor($1))
//echo -a $SetWholeNumber(4.6) - should return 5
//echo -a $SetWholeNumber(4.2) - should return 4