Post revised because OP is a liar.
(ILT main.h L41)
static const int64_t MAX_MINT_PROOF_OF_STAKE = 36.50 * COIN; // 3650% annual interest
(ILT main.cpp L998)
int64_t nRewardCoinYear;
nRewardCoinYear = MAX_MINT_PROOF_OF_STAKE;
int64_t nSubsidy = nCoinAge * nRewardCoinYear / 365 / COIN;
I was going to post a solution, but since you are intent on lying to all of us, I don't think that's wise. Not a complete clone, but it's up the family tree. Anyone with half a brain(in fact math only needs half) could figure out
how to simplify this to make overflows practically impossible. What they might not see, is that dividing by COIN
still puts the fuckin return value in non-satoshi format (THE REQUIRED FORMAT). The same thing I posted 11 pages ago. There is a little more to it, though.
Did you calculate below
int64_t COIN = 100000000;
int64_t MAX_MINT_PROOF_OF_STAKE = 36.5 * COIN;
int64_t nCoinAge = 100 * COIN * 1; // actually 100 coins one day aged
int64_t nRewardCoinYear = MAX_MINT_PROOF_OF_STAKE;
int64_t nSubsidy1 = nCoinAge * nRewardCoinYear / 365 / COIN;
and
int64_t COIN = 100000000;
int64_t MAX_MINT_PROOF_OF_STAKE = 36.5 * COIN;
int64_t nCoinAge = 100 * COIN * 1; // actually 100 coins one day aged
int64_t nRewardCoinYear = MAX_MINT_PROOF_OF_STAKE;
int64_t nSubsidy2 = nCoinAge / COIN * nRewardCoinYear / 365;
Is nSubsidy1 equal to nSubsidy2?