Unless I missed something (quite sure I did not), every block appears to be predictable - anomalies occur based on the CURRENT difficulty and the CURRENT block height... not the upcoming difficulty. So there is no prediction or calculation of nTime required to determine the value of future blocks. My testing indicates that you can reliably predict if the next block is an anomaly or not, every time, just by calling GetBlockValue from a newly created API function, using block height as a param. No fancy code is required, and KGW doesn't even come into play here. Anybody should be able to add a "isNextAnomaly" function to the daemon quite easily.
What I don't understand is how would you determine the next difficulty so that you know whether or not you create an anomaly, and more important how could you influence the difficulty? It's still completely random when someone will solve a block, so therefore it would be completely random what the next difficulty would be. You can calculate an estimate of this but theoretically it could take forever. Could you help me, what don't I understand?