Wow! In just two revisions, this went very, very quickly from "the calculations have some serious flaws" to "this is the best pace calculator I've ever used."
I'm just impressed that you're able to get the Z80 to do the math you need it to do at all. I'm no expert on the subject, but I know that the Z80 is not straightforward. You have to trick the fkn thing just to get it to do something as simple as multiply or divide. It's like some kind of sadistic abacus.
I really like how the early boards get gradually eliminated from the calculation between 5-1 and 7-2, rather than abruptly on 6-1. Keeping some data in there, or something else you're doing, appears to be protective against the "unusually huge or small early conveyor or rivet" problem. The pace isn't flying completely out of whack.
I also like the 1K per death points. That's good. 3,400 death points would be unusually low, but it's safer to go lower, and it's probably true that at least a little something should be added to pace for deaths.
I made a savestate after a 111K start, and starting from that, went in two different directions: I did one sample of L5 through L8 56Kish levels, and another sample where I played L5 through L8 as 47Kish levels. By 8-1, the numbers all seem to be smoothed out, and the pace it gives is pretty much exactly what I would expect, and what I get if I do the "simple" method.
I didn't try any super-high 1.15+ type boards, so I can't say if it works as well for maxout play, but it seems to work fine for anything lower.
I also tried doing other weird things, by cheating and board-skipping and stuff, to try to get it to put out a crazily-wrong number, but I couldn't confuse it.
Now we just need someone to take this algorithm and stuff it into a program that does OCR and Pauline can be updated for the modern age.