Hola erkos,
Lo he probado con la nueva beta, pero funciona todo bien, puedes probar este simple programa para confirmar ?:
program test_casting;
global
int iv;
double dv;
begin
dv = 102345667.434343435534;
iv = (int)dv;
write_int(0, 160, 100, 4, &iv);
repeat
frame;
until(key(_esc));
end
Deberia dar como output el numero
102345667Sobre el casting anterior que has hecho (var = (float)round), como ya te dijo GINO, es una operacion inutil ademas de ser erratica, porque estas casteando la variable da DOUBLE a FLOAT, si el numero es demasiado grande (en este caso no, pero puede pasar), al castearlo, saldra otro por la perdida de precision, a su vez este numero sera casteado implicitamente a INT.