Based on what I see in the Bitcoin Core source code validation.cpp file, I disagree - the subsidy has an exponential decay for 64 epochs and then 0: https://github.com/bitcoin/bitcoin/blob/master/src/validation.cpp
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams) { int halvings = nHeight / consensusParams.nSubsidyHalvingInterval; // Force block reward to zero when right shift is undefined. if (halvings >= 64) return 0; CAmount nSubsidy = 50 * COIN; // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years. nSubsidy >>= halvings; return nSubsidy; }
The critical thing to note is that reaching 0 is not when the problem occurs. Instead, the incentive for shenanigans grows as the subsidy declines in relation to fees, so probably in a couple of halvings things will start to get weird. Maybe I'm missing something.