1. A method of programming non-volatile storage, comprising: programming a first set of non-volatile storage elements to a first set of one or more target conditions using a first set of programming pulses, and completing the programming of the first set of non-volatile storage elements to the first set of one or more target conditions prior to starting programming of other non-volatile storage elements after starting the programming of the first set of non-volatile storage elements to the first set of one or more target conditions; during the programming of the first set of non-volatile storage elements to the first set of one or more target conditions, determining that at least a subset of the first set of non-volatile storage elements have reached a first intermediate condition in response to a nth programming pulse of the first set of programming pulses and decreasing pulse magnitude increment for the first set of programming pulses for additional programming using the first set of programming pulses to complete the programming of the first set of non-volatile storage elements to the first set of one or more target conditions; storing an indication based on the nth programming pulse; and after completing the programming of the first set of non-volatile storage elements to the first set of one or more target conditions, programming one or more non-volatile storage elements to a second set of one or more target conditions using a second set of programming pulses, the second set of programming pulses includes a first pulse having a magnitude based on the stored indication.