Thank you so much, Mirek. You're right, I didn't account for the 0 based index.
I think the only problem I'm having now has to do with why I am using Gate(). I was initially using if(Validate())..., but when I use that; it seems to go straight to the else statement. Then, I tried if(THISBACK(Validate))..; that went into the if(Validate())..., but never actually called Validate(). I think its just a lack of understanding, I'm just not sure what I'm missing...