With the following test case, nint gives wrong result. svn Revision: 127756
! Program to test the real->integer conversion routines. program intrinsic_integer implicit none real :: val integer :: i val = 0.7 i = nint(val) print *, val, i val = -0.7 i = nint(val) print *, val, i end program This gives: $ ./a 0.7000000 0 -0.7000000 0 $ cat nint_test.f90.003t.original MAIN__ () { int4 i; real4 val; static int4 options.0[7] = {68, 127, 0, 0, 0, 1, 0}; _gfortran_set_options (7, (void *) &options.0); val = 6.99999988079071044921875e-1; i = (int4) __builtin_lroundf (val); { struct __st_parameter_dt dt_parm.1; dt_parm.1.common.filename = &"nint_test.f90"[1]{lb: 1 sz: 1}; dt_parm.1.common.line = 8; dt_parm.1.common.flags = 128; dt_parm.1.common.unit = 6; _gfortran_st_write (&dt_parm.1); _gfortran_transfer_real (&dt_parm.1, &val, 4); _gfortran_transfer_integer (&dt_parm.1, &i, 4); _gfortran_st_write_done (&dt_parm.1); } val = -6.99999988079071044921875e-1; i = (int4) __builtin_lroundf (val); { struct __st_parameter_dt dt_parm.2; dt_parm.2.common.filename = &"nint_test.f90"[1]{lb: 1 sz: 1}; dt_parm.2.common.line = 11; dt_parm.2.common.flags = 128; dt_parm.2.common.unit = 6; _gfortran_st_write (&dt_parm.2); _gfortran_transfer_real (&dt_parm.2, &val, 4); _gfortran_transfer_integer (&dt_parm.2, &i, 4); _gfortran_st_write_done (&dt_parm.2); } } -- Summary: Wrong result from nint() on Cygwin Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jvdelisle at gcc dot gnu dot org GCC host triplet: i686-pc-Cygwin http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33177