In celebration of leap day, I wrote this to tell whether or not a year is a leap year.

While 0
Lbl V
End
Input “YEAR:”,Y
If Y≤0
Then
Disp “WHAT WERE YOU”,“THINKING?”, “YOU CAN’T HAVE A”, “YEAR LESS THAN 1!”,“TRY AGAIN
Goto V
Else
(int(Y/4)=Y/4)-(int(Y/100)=Y/100)+(int(Y/400)=Y/400)
Disp sub(“NOPELEAP”,4Ans+1,1
End

Leap year isn't just every 4 years. A year is actually about 365.24 years. ABOUT, not exactly.
So scientists decided that every 100 years, there would be a normal year. So the year 1800 was NOT a leap year, even though 1800 is divisible by 4.
However, this was too much, so scientists made the final set of leap year rules:
Every 4 years, there is a leap year. If it is also a multiple of 25, then it is not. But if it is a multiple of 400, then it is a leap year. SO:
1701 - not; 1704 - leap year; 1800 - not; 1804 - leap year; 2000 - leap year; 2100 - not.
But even with this new set of rules, it still is not exact. I think we'll be like 17 hours off in 2500, so scientist need to come up with a new system for leap years. But it's pretty exact, so It'll work for a while.
Hope this explained things correctly.

What? I said 'If it is also a multiple of 25, then it is not…' It needs to be a multiple of 4 and 25. Any multiple of 4 that is also a multiple of 25 is a multiple of 100. And 2050/4 is not an integer; 2050 is not a multiple of 4.

Just to make this code better, I've decided to take a look at it. Never ever ever ever ever ever ever ever use Gotos. I know they exist, but it's bad coding practice. Trust me, it just is. What saddens me, is that it seems you have come up with a convoluted way of prevent a memory leak, which while it may work, makes your code terribly unreadable. Also, the sub("NopeLeap" part is creative, but you should have a 4 as the last argument, and not a 1. See, the code is shorter and more readable. I just wish Ti-basic had a Do-While loop.

-1->Y
While Y≤0
Input "Year:",Y
if Y≤0
Disp “WHAT WERE YOU”,“THINKING?”, “YOU CAN’T HAVE A”, “YEAR LESS THAN 1!”,“TRY AGAIN
End
(fpart(y/4)=0)-(fpart(y/100)=0)+(fpart(y/400)=0)
Disp sub(“NOPELEAP”,4Ans+1,4