1. A method of operating non-volatile storage, the method comprising: determining information indicative of resistance of a memory cell having a reversible resistivity-switching memory element; determining whether a programming operation is complete based on the information; determining one or more programming conditions to apply to the memory cell based on the information and a pre-determined algorithm that is based on properties of the memory cell having the reversible resistivity-switching memory element, the determining one or more programming conditions is performed if the programming operation is not yet complete; applying the one or more programming conditions to the memory cell if the programming operation is not yet complete; and repeating the determining the information indicative of resistance, the determining whether the operation is complete, the determining one or more programming conditions, and the applying the one or more programming conditions until it is determined that the programming operation is complete.