Números de Fibonacci se tornam negativos após um certo termo

Eu escrevi este programa no Fortran para exibir os números de Fibonacci até o x-ésimo termo:

program fibonacci
implicit none
integer :: x,p,c,i,t !initializes limit, previous, current, iterative, and temp
print *, "List the first x fibonacci numbers: "
read *, x      !reads the limit
p=0            !sets previous to zero
c=1            !sets current to 1
do i=1,x
    print *, c !prints the current fibonacci number
t = c      !sets the temporary variable to the current
c = c + p  !sets the current to the current plus the previous
p = t      !sets the previous to the temporary value
end do         !iterates until it reaches the limit 'x'
end program fibonacci

Quando eu compilar e executar, e digitar o número 10, ele fará o que é esperado

 List the first x fibonacci numbers: 
10
       1
       1
       2
       3
       5
       8
      13
      21
      34
      55

mas quando eu digitei 50:

 List the first x fibonacci numbers: 
50
       1
       1
       2
       3
       5
       8
      13
      21
      34
      55
      89
     144
     233
     377
     610
     987
    1597
    2584
    4181
    6765
   10946
   17711
   28657
   46368
   75025
  121393
  196418
  317811
  514229
  832040
 1346269
 2178309
 3524578
 5702887
 9227465
14930352
24157817
39088169
63245986
102334155
165580141
267914296
433494437
701408733
1134903170
1836311903
-1323752223
512559680
-811192543
-298632863

Não sei qual é o problema, até onde posso ver, a lógica é sólida. Onde está meu erro?

Estou usando o compilador gfortran.

questionAnswers(1)

yourAnswerToTheQuestion