> print *, 'nint ( y ) =', nint (y), ', where y < 0.5 = ', y < 0.5 > end > > output is > nint ( 8388609. ) = 8388610 > nint ( y ) = 1 , where y < 0.5 = T
Try -fdump-parse-tree. You've given more digits in y than its precision. This is permitted by the standard. It appears the gfortran frontend is taking y = 0.499999 and the closest representable nubmer is y = 0.5. If that's what were happening, then the "T" in the output above would have been "F".