La verdad, no veo que pueda pasar eso. Solamente tiene sentido si hay problema con los datos de tu tabla.
SI hago una prueba con variables de sesión en MySQL, obtengo:
Código SQL:
Ver originalmysql> SELECT @price:=30;
+------------+
| @price:=30 |
+------------+
| 30 |
+------------+
1 ROW IN SET (0.14 sec)
mysql> SELECT @price;
+--------+
| @price |
+--------+
| 30 |
+--------+
1 ROW IN SET (0.02 sec)
mysql> SELECT IF(@price<=35, @price + 7, @price* 1.33) total;
+-------+
| total |
+-------+
| 37 |
+-------+
1 ROW IN SET (0.09 sec)
mysql> SELECT @price:=38;
+------------+
| @price:=38 |
+------------+
| 38 |
+------------+
1 ROW IN SET (0.00 sec)
mysql> SELECT IF(@price<=35, @price + 7, @price* 1.33) total;
+-------+
| total |
+-------+
| 50.54 |
+-------+
1 ROW IN SET (0.05 sec)
Así que no, no es un tema de la formula ni del uso de IF(), es un tema de datos.