1. A method for operation of a flash memory controller, comprising: reading data from a portion of a flash memory using a candidate reference voltage; determining whether a read error occurred; determining a plurality of decision patterns if it is determined a read error occurred, each decision pattern corresponding to a voltage region bordering the candidate reference voltage; counting occurrences of each decision pattern of the plurality of decision patterns in the data read from the portion of the flash memory; determining a new candidate reference voltage in response to frequency of the occurrences of each decision pattern; and using the new candidate reference voltage in repeating the step of reading data from a portion of a flash memory.