Remember also that not all seed words generated are valid, the 12th/24th are checksums, so if it fails the checksum test it's obviously not the right mnemonic seed/date.
D'oh! And here we are trying to derive all seeds formed by the date shift combinations...

I have no idea how I'm going to fit a checksum function in the code though.
It does not matter - you create words by shifting and then you try to generate address - seed is correct and it works or incorrect - so you may skip it. I would not focus on that during shifting.
Still the questions are:
- which address (derivation path) should be used?
- what is the stake?
- why do we do it?