Насколько я помню, округление при преобразовании float->int всегда в меньшую сторону. Если не жалко времени (не своего, а затрачиваемого на выполнение проги), то или юзай floor()/ceil(), или используй вариант г-на aleh, то есть просто int(float_part+0.5), должно работать по идее.