https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96711
--- Comment #3 from B Eggen <bre08 at eggen dot co.uk> --- Here is the latest f90 file: program nint_error integer :: n, m integer(kind=16) :: i, j, nint integer, parameter :: idp=selected_real_kind(9,99) integer, parameter :: i16=selected_int_kind(38) real(kind=idp) :: x, y write(*,'(*(g0:" "))') 'i16=', i16, huge(i) i=1_16 x=1.0d0 do n=1, 128, 1 j=i-1_16 y=x-1.0d0 m=nint(y) ! this compiles, but gives wrong results ! m=nint(y,i16) ! this will generate an internal compiler error write(*,'(*(g0:" "))') n, i, x, m i=i+i x=x+x if ( (m<1) .and. (n>3)) exit end do do i=2147483647_16-10_16, 2147483648_16+10_16, 1_16 x=dble(i) m=nint(x) write(*,'(*(g0:" "))') i, x, m end do stop end program nint_error