1. A method for operating a non-volatile storage system, comprising: generating a plurality of bit line voltage options associated with a programming operation; determining a state associated with a memory cell; determining an upper current threshold based on the state; determining a first control bit based on whether an output current associated with the memory cell is greater than the upper current threshold; selecting a first bit line voltage of the plurality of bit line voltage options based on the first control bit; and programming the memory cell by applying the first bit line voltage to the memory cell.