for (i1 = 0; i1 <= (SnumRead + 1); i1++)Why does this loop loop a different number of times?

You really need to start using arrays and functions. Nothing about those 4 blocks of code (expect the bizarre discrepancy in the number of times each loops) is different, except which array is read from. There is, for instance, absolutely no reason to use four different loop index variables or 4 different accumulators.

Casting 1000000 to a float may not be achieving the result you expect. Using 1000000.0 instead would eliminate the need for the cast. Also, the compiler knows that a literal with a decimal place in it is not an int. Without that decimal point, it assumes that the value IS an int (which it isn't). What happens when that value is cast to a float is anyone's guess.

I wouldn't write code that requires guessing. Your mileage may vary.

Your ISRs are theoretically all firing at different times. Yet, SnumRead is the same for all 4 situations. Why?

i figured out the problem it was the = sign in the isr.

the reason for the different indexes is because each isr in theory will be firing at a different time at slightly different frequencies. i'll try removing the float cast and see what happens

snumread is the number of spaces in the array to use; each block of code takes the same number of samples. the parentheses were an error; that was some in between code i was working on. i fixed it here: