1. A method of error correction for systemic errors in data read from a multi-level cell (MLC) memory, the method comprising the steps of: reading calibration data from the MLC memory; comparing the read calibration data to correct calibration data; detecting systematic errors in the read calibration data based on the comparison; determining drift for the systematic errors; generating one or more feedback signals based on the determined drift; and correcting for the drift based on the one or more feedback signals.