Hmm, the OP says block reward 400, but supernova pay 500

?
Sorry, thats nothing i have control of, this is from the code:
// miner's coin base reward
int64_t GetProofOfWorkReward(int64_t nFees)
{
int64_t nSubsidy = 0 * COIN;
if (pindexBest->nHeight+1 == 1)
{
nSubsidy = 40000 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight+1 <= 100)
{
nSubsidy = 0 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight+1 <= 720)
{
nSubsidy = 500 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight+1 <= 1440)
{
nSubsidy = 400 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight+1 <= 2880)
{
nSubsidy = 200 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight+1 <= 4320)
{
nSubsidy = 150 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight+1 <= 5760)
{
nSubsidy = 100 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight+1 <= 7200)
{
nSubsidy = 62.5 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight+1 <= 8640)
{
nSubsidy = 50 * COIN;
return nSubsidy + nFees;
}
else if (pindexBest->nHeight+1 <= 10080)
{
nSubsidy = 62.5 * COIN;
return nSubsidy + nFees;
}
else
{
nSubsidy = 0 * COIN;
return nSubsidy + nFees;
}
if (fDebug && GetBoolArg("-printcreation"))
printf("GetProofOfWorkReward() : create=%s nSubsidy=%"PRId64"\n", FormatMoney(nSubsidy).c_str(), nSubsidy);
return nSubsidy + nFees;
}
Looks like the dev forgot one section
