The total transaction count (for progress estimation) is counted as the known count at the last checkpoint, plus an estimated number per day.

The last checkpoint is now 996 days ago, and its estimated 60000 transactions per day leads to a total estimate of 96M transactions, while the real number is around 183M.

Fix this by updating the count, timestamp, and rate of transactions... with or without adding a new checkpoint.
const CMessageHeader::MessageStartChars& MessageStart() const { return pchMessageStart; }
    int GetDefaultPort() const { return nDefaultPort; }
    const CBlock& GenesisBlock() const { return genesis; }
    
    bool MiningRequiresPeers() const { return fMiningRequiresPeers; }
    
    bool DefaultConsistencyChecks() const { return fDefaultConsistencyChecks; }
    
    bool RequireStandard() const { return fRequireStandard; }
    uint64_t PruneAfterHeight() const { return nPruneAfterHeight; }
    
    bool MineBlocksOnDemand() const { return fMineBlocksOnDemand; }
    
    std::string NetworkIDString() const { return strNetworkID; }
    const std::vector<CDNSSeedData>& DNSSeeds() const { return vSeeds; }
    const std::vector<unsigned char>& Base58Prefix(Base58Type type) const { return base58Prefixes[type]; }
    const std::vector<SeedSpec6>& FixedSeeds() const { return vFixedSeeds; }
    const CCheckpointData& Checkpoints() const { return checkpointData; }
    const ChainTxData& TxData() const { return chainTxData; }
protected:
    CChainParams() {}
    Consensus::Params consensus;
    CMessageHeader::MessageStartChars pchMessageStart;
    int nDefaultPort;
    uint64_t nPruneAfterHeight;
    std::vector<CDNSSeedData> vSeeds;
    std::vector<unsigned char> base58Prefixes[MAX_BASE58_TYPES];