A method for programming a set of storage elements in a non-volatile storage system, the method comprising: based on write data, configuring data in data latches associated with storage elements in a first subset of the set which are to be kept in an erased state, and in data latches associated with storage elements in a second subset of the set which are to be programmed to respective target data states (A, B, C); inhibiting the storage elements in the first subset while programming the storage elements in the second subset, and updating the associated data latches of the storage elements in the second subset based on a progress of the storage elements in the second subset during the programming; wherein each storage element in the second subset which has successfully completed programming had a first value in one of its associated data latches; determining that no more than a maximum number (THRESHOLD) of storage elements in the second subset have failed to reached their respective target data states, so that the programming of the storage elements in the second subset is considered to be successfully completed; and characterised by responsive to the successful completion of the programming of the storage elements in the second subset, determining a number of storage elements in the first subset which have an error by performing a read operation for the storage elements in the first subset which distinguishes between the erased state and an adjacent state, wherein the adjacent state is adjacent to the erased state and is one of the target data states; wherein: each storage element in the first subset is identified by a value which is different than the first value in one of its associated data latches, the one of the associated data latches of each storage element in the first subset corresponding to the one of the associated data latches of each storage element in the second subset; and the determining the number of storage elements in the first subset which have the error comprises performing a logical operation using the one of the associated data latches of each storage element in the first subset and results from the read operation. based on write data, configuring data in data latches associated with storage elements in a first subset of the set which are to be kept in an erased state, and in data latches associated with storage elements in a second subset of the set which are to be programmed to respective target data states (A, B, C); inhibiting the storage elements in the first subset while programming the storage elements in the second subset, and updating the associated data latches of the storage elements in the second subset based on a progress of the storage elements in the second subset during the programming; wherein each storage element in the second subset which has successfully completed programming had a first value in one of its associated data latches; determining that no more than a maximum number (THRESHOLD) of storage elements in the second subset have failed to reached their respective target data states, so that the programming of the storage elements in the second subset is considered to be successfully completed; and characterised by responsive to the successful completion of the programming of the storage elements in the second subset, determining a number of storage elements in the first subset which have an error by performing a read operation for the storage elements in the first subset which distinguishes between the erased state and an adjacent state, wherein the adjacent state is adjacent to the erased state and is one of the target data states; wherein: each storage element in the first subset is identified by a value which is different than the first value in one of its associated data latches, the one of the associated data latches of each storage element in the first subset corresponding to the one of the associated data latches of each storage element in the second subset; and the determining the number of storage elements in the first subset which have the error comprises performing a logical operation using the one of the associated data latches of each storage element in the first subset and results from the read operation. each storage element in the first subset is identified by a value which is different than the first value in one of its associated data latches, the one of the associated data latches of each storage element in the first subset corresponding to the one of the associated data latches of each storage element in the second subset; and the determining the number of storage elements in the first subset which have the error comprises performing a logical operation using the one of the associated data latches of each storage element in the first subset and results from the read operation.