I think I found a small flaw in adi_fat.c
In line 247 of this file (taken from Update 8 of Visual DSP++ 5.0),
there's the define
#define FAT_SECOND(X) (X&0x001E)
This should rather be
#define FAT_SECOND(X) (X&0x001F)
Note that the seconds is recorded only to a 2 second resolution
That leaves you with a mask that gives you values from 0-31, which for even seconds would be 0-29, of course. Somewhere else in that code, there must be a left shift which doubles these values. This is all correct.
You are right that the mask is wrong, but that is not the source of the even seconds.
Retrieving data ...