A non-volatile storage system, comprising: a non-volatile storage element; a voltage providing circuit that selectively provides a programming voltage, the non-volatile storage element changes from a first predetermined resistance state to a second predetermined resistance state in response to a first voltage magnitude (Vreset), the non-volatile storage element changes from the second predetermined resistance state to the first predetermined resistance state in response to a second voltage magnitude (Vset), the programming voltage is at least as large as the second voltage magnitude (Vset); and a selection circuit is configured to selectively connect the non-volatile storage element to the voltage providing circuit for a first period of time to change the non-volatile storage element receiving said programming voltage to the second predetermined resistance state, the first period of time is shorter than needed to change the non-volatile storage element to the first predetermined resistance state in response to the programming voltage, the selection circuit comprises: an inverter having a data input and power input and output, the inverter receives a selection signal (CSG<15:0>) at the data input and a pulse at the power input; characterised in that said selection circuit further comprises: a first switch with a gate connected to the output of the inverter; and a second switch with a gate connected to the output of the inverter, the first switch is connected between the voltage providing circuit and a control line connected to the non-volatile storage element, the second switch is connected between the control line and an unselected storage element voltage, such that, in case of selection of the control line, said control line receives a programming pulse equal in duration to said pulse, the duration being the first time period. a non-volatile storage element; a voltage providing circuit that selectively provides a programming voltage, the non-volatile storage element changes from a first predetermined resistance state to a second predetermined resistance state in response to a first voltage magnitude (Vreset), the non-volatile storage element changes from the second predetermined resistance state to the first predetermined resistance state in response to a second voltage magnitude (Vset), the programming voltage is at least as large as the second voltage magnitude (Vset); and a selection circuit is configured to selectively connect the non-volatile storage element to the voltage providing circuit for a first period of time to change the non-volatile storage element receiving said programming voltage to the second predetermined resistance state, the first period of time is shorter than needed to change the non-volatile storage element to the first predetermined resistance state in response to the programming voltage, the selection circuit comprises: an inverter having a data input and power input and output, the inverter receives a selection signal (CSG<15:0>) at the data input and a pulse at the power input; an inverter having a data input and power input and output, the inverter receives a selection signal (CSG<15:0>) at the data input and a pulse at the power input; characterised in that said selection circuit further comprises: a first switch with a gate connected to the output of the inverter; and a second switch with a gate connected to the output of the inverter, the first switch is connected between the voltage providing circuit and a control line connected to the non-volatile storage element, the second switch is connected between the control line and an unselected storage element voltage, such that, in case of selection of the control line, said control line receives a programming pulse equal in duration to said pulse, the duration being the first time period. a first switch with a gate connected to the output of the inverter; and a second switch with a gate connected to the output of the inverter, the first switch is connected between the voltage providing circuit and a control line connected to the non-volatile storage element, the second switch is connected between the control line and an unselected storage element voltage, such that, in case of selection of the control line, said control line receives a programming pulse equal in duration to said pulse, the duration being the first time period.