1. A method for selectively refreshing a nonvolatile memory array having n number of words in a row, each row being organized in a plurality of pages comprising: a) providing a page address to the memory array; b) reading each word sequentially out of a page corresponding to said address; c) providing an ECC circuit to receive each word that is read; d) evaluating the integrity of each word with an error correction code (ECC); e) providing a signal to indicate whether any word on said page contains a program failure; f) refreshing each page that is determined to contain a program failure by writing new data to said address without performing an erase operation.