FUNCTION fibonacci (n AS LONG) AS QUAD DIM u AS LONG, a AS LONG, L0 AS LONG, outP AS QUAD STATIC fibNum() AS QUAD u = UBOUND(fibNum) a = ABS(n) IF u < 1 THEN REDIM fibNum(1) fibNum(1) = 1 u = 1 END IF SELECT CASE a CASE 0 TO 92 IF a > u THEN REDIM PRESERVE fibNum(a) FOR L0 = u + 1 TO a fibNum(L0) = fibNum(L0 - 1) + fibNum(L0 - 2) IF 88 = L0 THEN fibNum(88) = fibNum(88) + 1 NEXT END IF IF n < 0 THEN fibonacci = fibNum(a) * ((-1)^(a+1)) ELSE fibonacci = fibNum(a) END IF CASE ELSE 'Even without the above-mentioned bug, we're still limited to 'F(+/-92), due to data type limits. (F(93) = &hA94F AD42 221F 2702) ERROR 6 END SELECT END FUNCTION FUNCTION PBMAIN () AS LONG DIM n AS LONG #IF NOT %DEF(%PB_CC32) OPEN "out.txt" FOR OUTPUT AS 1 #ENDIF FOR n = -92 TO 92 #IF %DEF(%PB_CC32) PRINT STR$(n); ": "; FORMAT$(fibonacci(n), "#") #ELSE PRINT #1, STR$(n) & ": " & FORMAT$(fibonacci(n), "#") #ENDIF NEXT CLOSE END FUNCTION