The TEST_Chanlst function uses if(arr_idx >= (MAXROW * MAXCOL)) in several places, this test fails to allow the last points to be accessed, it looks like the test should be ">" not ">=".
if(arr_idx >= (MAXROW * MAXCOL)) is used to test the out of range of arr_idx. As the last index is at MAXROW MAXCOL - 1, the next not allowed index is MAXROW MAXCOL, so this is not an error.
The TEST_Chanlst function uses if(arr_idx >= (MAXROW * MAXCOL)) in several places, this test fails to allow the last points to be accessed, it looks like the test should be ">" not ">=".