Your interrupt handling is broken. There are a list of rules, you broke at least two. You didn't declare the variable volatile. You have a non-atomic read of the variable.
Another thing - if what is read is what was written, which can't be ruled out yet, then where is the post showing the code that writes data to EEPROM? That is important, no?
Then the question would also be - does the write sketch or code ever get run in the 3-4 day time frame that you mention? And what is your means of verification of the value that is read?