Cálculo de Fibonacci em Java Longs mostra resultados negativos

Minha calculadora de Fibonacci funciona bem, mas ao subir para números mais altos o resultado é negativo, como seria se fosse umInteger acima de seu valor máximo.

Está trabalhando com um cachejava.util.Map<Integer, Long>. Tudo o que entra noMap é exatamente o que se espera, mas ao imprimir, recebo, por exemplo para 291:

-784134397488903422

De acordo comhttp://www.maths.surrey.ac.uk/hosted-sites/R.Knott/Fibonacci/fibCalcX.html, deveria ser:

2923602405716568564338475449381171413803636207598822186175234

Parece que algo dá errado com o meuLongs, mas ainda não tenho certeza, o que exatamente. Alguém pode por favor me dizer a direção correta?

Valores doMap entradas:http://pastebin.com/uje07Ays

questionAnswers(3)

yourAnswerToTheQuestion