1. A method of programming non-volatile storage, comprising: receiving a request to program data to a set of multi-state non-volatile storage elements; applying a predetermined number of program voltage pulses to a set of non-volatile storage elements to program said data to said non-volatile storage elements, said applying includes increasing a size of each of said program voltage pulses by a first increment value until said predetermined number is reached; applying one or more additional program voltage pulses to said set of non-volatile storage elements to complete programming of said data, said applying one or more additional program voltage pulses includes increasing a size of each of said one or more additional program voltages by a second increment value.