If you need an unified format, use this.
And, what this does is, basically, minimize erasing and writing. I found that byte of W49 changes after verifing of the byte passed. Probably, it is due to be affected by wrinting of another byte.
So, basic idea is like this.
1. write normally in the first run. 2. write only error bytes after second run without erasing.
As you know, bits of flash are 1 when erased and writing changes only 1 -> 0. So, my way can be applied only if you need to change 1 -> 0. But, all cases I have found are this case.
And, this is just a quick hack, not such a good solution. I think this way can be applied to even the first run. Why you do erasing -> writing sequence if all data in a sector is just same as what you want to write?
--- Okajima, Jun.