// half_up is better