Patent ID: 8045375

Claim:
A method of programming non-volatile storage, comprising: performing one stage of a multi-stage programming process on a plurality of non-volatile storage elements, the multi-stage programming process programs the plurality of non-volatile storage elements to one or more final target conditions, the one stage includes programming the non-volatile storage elements to one or more first interim target conditions using a first set of program pulses, performing the one stage includes: identifying a program pulse associated with achieving a particular result, performing one or more sensing operations for one or more alternative results for the non-volatile storage elements, storing an indication based on a first alternate result of the one or more alternative results and the identified program pulse if the sensing operation determines that greater than a predetermined number of the non-volatile storage elements achieved the first alternative result, and storing the indication based on the identified program pulse if the sensing operation does not determine that sufficient number of non-volatile storage elements achieved the one or more alternative results; and performing an additional stage of the multi-stage programming process including applying a second set of program pulses having an initial pulse with a magnitude set based on the stored indication.