Under normal conditions, the status in the end-point database only changes because you do that manually or it is done by an enforcement profile (Post Authentication Update Endpoint).
Because between the lines it looks like more data is lost from the endpoint, please check under Server Configuration -> Cluster-wide Parameters -> Cleanup intervals, if you may be have configured the cleanup interval for known or unknown endpoints there. If you did, that will remove the entry from the endpoint DB after a time of inactivity.
MAC caching uses the Endpoint Database, and for that reason, the entries should not be cleaned up before the end of your 90 days.
Could this be the issue?
The default setting of 0 for cleanup will disable cleaning at all for that category.