1. A method for reading data from a flash memory cell, the method comprising detecting voltages from a group of memory cells, the group of memory cells having associated metadata for error detection, each memory cell storing a voltage representing a data value selected from a plurality of possible data values, each possible data value corresponding to one range of a plurality of non-overlapping ranges of analog voltages, wherein the plurality of non-overlapping ranges of analog voltages are defined by a plurality of voltage thresholds; identifying memory cells having uncertain data values based on the detected voltages; adjusting at least a portion of the plurality of voltage thresholds to generate an alternative plurality of non-overlapping ranges of analog voltages; determining alternative data values for at least a portion of the group of memory cells using the alternative plurality of non-overlapping ranges of analog voltages to interpret the detected voltages for the group of memory cells; and performing an error detection test using the determined alternative data values and the metadata associated with the group of memory cells.