Hmm, o ile przy zwyczajnych regułach matematycznych, to macie rację, ale wg tego, co on chce, to trzeba inaczej;
Masz tu ogólną ideę - ubierz to sobie funkcję.
$var = 3.2;
$var = $var-(int)$var<0.3 ? (int)$var-1 : (int)$var+1;
edit@up: Zapostowałeś chwilę przede mną, więc pozwoliłem sobie porobić testy. Konstrukcje języka zawsze będą szybsze niż funkcje, 10k iteracji wg Twojego rozwiązania i mojego - rzutowanie na integer i wycinanie całości było średnio o 1/3 szybsze niż z ceil/floor.
Ale trochę mnie dziwi, że funkcja, która powinna być - teoretycznie - szybsza i robi to samo, jest tak naprawdę - wolniejsza.