Фортран: наибольшее и наименьшее целое число

Фортран для меня совершенно новый, кто-нибудь может мне помочь решить следующую проблему? Я хочу узнать все целые числа вида, а также самое большое и наименьшее значение для каждого вида на моем компьютере. У меня есть код, указанный ниже:

program intkind
implicit none

integer :: n=1
integer :: integer_range =1


do while(integer_range /= -1)
    print*, "kind_number ", selected_int_kind(n)
    call rang(integer_range)
    n = n *2
    integer_range = selected_int_kind(n)
end do

contains
subroutine rang(largest) 
    integer largest
    print*, huge(largest)

end subroutine

end 

Целые добрые числа, которые я получаю: 1,2,4,8.

Почему каждое наибольшее целое число для каждого вида одинаково:2147483647? И есть ли встроенная функция для наименьшего целого числа?

Как я могу сохранить целочисленный добрый номер, когда подпрограммаrang называется? Я думаю, что это ключ к наибольшему целому числу.