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; identifying memory cells having uncertain data values based on the detected voltages; determining at least one alternate range of analog voltages for the identified memory cells, wherein each alternate range corresponds to one of the plurality of non-overlapping ranges and to one of the plurality of possible data values; and performing an error detection test using the metadata associated with the plurality of memory cells, the at least one determined alternate range, and the voltages detected from the identified memory cells.