IIRC not all bits in that byte are used, and thus not all can be programmed. You could try to set those to 0 instead of 1 (or 1 instead of 0) in your input to see if the write and verification errors go away.
Check the datasheet for the unused bits. Also check the avrdude config file, the section for your particular MCU. It might contain a mask (but I am not sure if there is one. I haven't used avrdude in ages. We dropped AVRs when Atmel came up with Studio 5, making it absolutely clear they have no intention to support development on anything but Windows).