The index of a stem needs to be resolved before using it. You cannot have something like X.(I-1). It wouldn't be recognized. You could store I-1 in another variable like J=I-1 just before and then using X.J to access it.
I think it's more fun to resolve these math problems with recursion. Something like the following where we compute the first 35 instances and store them in the array ARR.
/* We go up to that number */ LIMIT = 35
/* List all elements in the array */ DO K=1 TO LIMIT SAY ARR.K END EXIT
FIBONACCI: PROCEDURE EXPOSE ARR.
/* Expose the array ARR so it is updated throughout the calls */ /* CURRENT is the current number being computed */
CURRENT = ARG(1)
/* If DATAYPE is NUM, it means we've already computed that number so we return it */
IF DATATYPE(ARR.CURRENT) = "NUM" THEN RETURN ARR.CURRENT
/* Else, we compute the fibonacci number recursively */
IF CURRENT = 1 | CURRENT = 2 THEN , ARR.CURRENT = 1 ELSE , ARR.CURRENT = FIBONACCI(CURRENT-2) + FIBONACCI(CURRENT-1)