main.cpp nSubsidy = (2222222.0 / (pow((dDiff+2600.0)/9.0,2.0)));
if (nSubsidy > 25) nSubsidy = 25;
if (nSubsidy < 5) nSubsidy = 5;
// yearly decline of production by 7.1% per year, projected 21.3M coins max by year 2050.
for(int i = 210240; i <= nHeight; i += 210240) nSubsidy -= nSubsidy/14;
The min reward is 5, annual decline is by 1/14 (mult. by 13/14) and we have 210240 blocks / year.
The current supply is 6kk and we had one annual decline so the min reward is 5*13/14 atm.
That gives 5*13/14 * 210240 = 976114 new coins per year. Annual decline yields infinite geometric serie and we got approx 976114 * 1/(1-13/14) = 13.6kk additional coins. Add the current supply = 6kk and that result in ~20kk total coins.
That's about minimum possible supply that doesn't depend on hashrate (I believe the maximum is five times more). There are super blocks now but it was said that they fit in supply, right?
What did I miss? How do the total supply can be less than 20kk?