The mistakes occurred because you did not communicate with your IO properly during this critical time. Waiver was processed by DOS, DOS was unware of your extension then; samilarly extension is processed in IO (for half year extension, IO doesn't need an approval from DOS, instead it reports later) without knowing your progress of waiver. So two processes were done independently, finally collision occurred.
You need to have a good discussion with your IO. Only they can help you.