The good news first, I don't see a problem with the code. To be sure, I tested your code in my system.
In a table formula, I get TBA% for the value in the IF statement when I'm in 2021 I get 20.3 when I'm in 2020.
In a report html, I get TBA% for the value in the IF statement when I'm in 2021. I get 20.3 when I'm in 2020.
So, your code structure has no obvious flaws.
---
The bad news is … i have no earthly idea why this wouldn't work on your side. In general when stuff like that happens, I break down the IF statement into components to see what's going on -- if you do the same, it might lead you to what's the trouble...
In this case, I would get output of each individual element... the CurrentDate(), the Dateformat(), and I might even add in GetInfo("project.fyMonthIndex") to make sure that if I'm in January, I get 0 and not 5 or something otherwise unexpected.
If everything comes back solid, then perhaps there's something more nefarious going on beneath the surface. I am curious how other folks approach this problem...
E