problem with for loop inside if

Hello,
i'm having a problem i can't quite solve, the program is simple:
i need to capture 64 values from analog pin in an array one time per second, then i want to print those 64 values, flush everything and loop again.
I'm using a non-blocking delay for the interval timer because of the long wait needed between reads.

The problem is that once the i counter reaches "63" which should trigger the for loop to dump the contents the serial output shows... nothing! and jumps from 63 to 94, i don't understand what's going on!.
The IF==63 should trigger and process the entire for loop, then reset the increment counter and keep going

#include <E24.h>
const int shunt = A0; // pata entrada
int currentraw; //valor del ADC
unsigned long previousMillis = 0;
const long interval = 1000;
int lecturas[63]; //almacen de página
byte i;

void setup() {
  pinMode (shunt, INPUT);
  Serial.begin(115200);
  while (!Serial) ;
}

void loop() {

  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    Serial.print("tick ");
    Serial.println(i);
    i++;
    lecturas[i] = analogRead(shunt);
    // aca iria el if=64 grabar eeprom
    if (i == 63) {
      for (byte b = 0; b < 64; b++) {
        Serial.println(lecturas[b]);
            };
            i=0;
    }

  }

}

An array with 63 elements does not have a 63th index.

arduino_new:
An array with 63 elements does not have a 63th index.

array[63] has 64th elements, arrays are zero indexed, thus they do have 64 elements(last one being 63).

in any case the array length is of no consequence to the issue of the IF not triggering

for (byte b = 0; b < 64; b++) {
Serial.println(lecturas[b ]); . . .

0-63 is 64 !

lecturas[63] 0-62

eliminateur:
array[63] has 64th elements, arrays are zero indexed, thus they do have 64 elements(last one being 63).

array[63] has 63 elements from 0th to 62th.

eliminateur:
in any case the array length is of no consequence to the issue of the IF not triggering

yes it does.

Did some changes then after your recommendations and appears to be working now, changed the order of the increment as it was in the middle of the code so i was never starting the array at 0 (had the i++ before the load!)

changed the array to [64] and moved the 2nd IF outside of the 1st one.

new code:

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    //currentraw=analogRead(shunt);
    Serial.print("tick ");
    Serial.println(i);
    lecturas[i] = analogRead(shunt);
    Serial.println(lecturas[i]);
    i++;
  }
  if (i == 64) {
    for (byte b = 0; b < 64; b++) {
      Serial.println(lecturas[b]);
    };
    i = 0;
  }

}