O número em f (93) na série fibonacci tem valor negativo, como?

Estou tentando imprimir séries de fibonacci até números 'N'. Tudo funciona conforme a expectativa até f (92), mas quando estou tentando obter o valor de f (93), os valores são negativos: "-6246583658587674878". Como isso pode ser possível? Qual é o erro na lógica abaixo?

public long fibo(int x){
    long[] arr = new long[x+1];
    arr[0]=0;
    arr[1]=1;
    for (int i=2; i<=x; i++){
        arr[i]=arr[i-2]+arr[i-1];
    }
    return arr[x];
}

f(91) = 4660046610375530309
f(92) = 7540113804746346429    
f(93) = -6246583658587674878

Isso é devido ao tipo de dados? Que outro tipo de dados devo usar para imprimir séries de fibonacci em até N números? N pode ser qualquer número inteiro dentro do intervalo [0..10.000.000].

questionAnswers(2)

yourAnswerToTheQuestion