Okay. I traced Griz's DNALen out of range bug to the function League_Eyefudge in F1Mode.bas. It adds a fake gene to the end of a bot in F1 mode so that the combatents don't have the same number of .eye statements.
It's a huge hack (which the author well knew given the comments in the code and the name of the routine - IMHO, bots should have and use GUIDs for species identification in the future) but the routine as it is is inadvertedly overwriting the end of the DNA and thus removing the tipo = 10, value = 1 at the end of the DNA casuing the run off in DNALen().
Changing lines 538 adn 539 in F1Mode.bas from
rob(robotnumber).DNA(t).tipo = 4
rob(robotnumber).DNA(t).value = 4
to the following:
rob(robotnumber).DNA(t).tipo = 10
rob(robotnumber).DNA(t).value = 1
fixes that specific issue. The DNA will now be terminated correctly and DNALen will work properly without walking off the end of the DNA array.
To be sure, there are still a bunch of issues with leagues, but this fixes Griz's crash.