1. A method of writing a target data value in a non-volatile memory, comprising: selecting a memory cell from the memory to write to a target data value; and performing a write operation on the selected memory cell, comprising: performing an alternating set of program and verify operations on the selected memory cell, each of the program operations including applying a programming pulse for altering the state of the selected memory cell, and each of the verify operations including verifying a parameter indicative of the resultant state of the selected memory cell against a reference value indicative of the target data value; and subsequent to each of said verify operations and prior to applying the subsequent programming pulse, determining whether to further alter the state of the selected memory cell in response to said verifying operation, wherein said verifying the parameter for each of the verify operations includes a plurality of independent comparisons performed to compare the parameter to the reference value indicative of the target data value.