Running on recent master, commit f1dbf92ff0475a01d20170ea422c1d086acbbc57

If I run:
```
test/functional/feature_fee_estimation.py --randomseed 108574360997204915
```

I get:
```
2020-12-19T20:14:06.175000Z TestFramework (INFO): Initializing test directory /tmp/bitcoin_func_test_bcwexp78
2020-12-19T20:14:07.738000Z TestFramework (INFO): This test is time consuming, please be patient
2020-12-19T20:14:07.738000Z TestFramework (INFO): Splitting inputs so we can generate tx's
2020-12-19T20:14:10.870000Z TestFramework (INFO): Finished splitting
2020-12-19T20:14:12.104000Z TestFramework (INFO): Will output estimates for 1/2/3/6/15/25 blocks
2020-12-19T20:14:12.104000Z TestFramework (INFO): Creating transactions and mining them with a block size that can't keep up
2020-12-19T20:14:15.879000Z TestFramework (INFO): Creating transactions and mining them at a block size that is just big enough
2020-12-19T20:14:21.104000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/home/sdaftuar/ccl-bitcoin/2020-12-latest-master/test/functional/test_framework/test_framework.py", line 126, in main
    self.run_test()
  File "test/functional/feature_fee_estimation.py", line 256, in run_test
    check_estimates(self.nodes[1], self.fees_per_kb)
  File "test/functional/feature_fee_estimation.py", line 140, in check_estimates
    check_smart_estimates(node, fees_seen)
  File "test/functional/feature_fee_estimation.py", line 130, in check_smart_estimates
    % (feerate, last_feerate))
AssertionError: Estimated fee (0.000565) larger than last fee (0.000479) for lower number of confirms

```
void ClearCurrent(unsigned int nBlockHeight);
    /**
     * Record a new transaction data point in the current block stats
     * @param blocksToConfirm the number of blocks it took this transaction to confirm
     * @param val the feerate of the transaction
     * @warning blocksToConfirm is 1-based and has to be >= 1
     */
    void Record(int blocksToConfirm, double val);
    
    unsigned int NewTx(unsigned int nBlockHeight, double val);
    
    void removeTx(unsigned int entryHeight, unsigned int nBestSeenHeight,
                  unsigned int bucketIndex, bool inBlock);
    /** Update our estimates by decaying our historical moving average and updating
        with the data gathered from the current block */
    void UpdateMovingAverages();
    /**
     * Calculate a feerate estimate.  Find the lowest value bucket (or range of buckets
     * to make sure we have enough data points) whose transactions still have sufficient likelihood
     * of being confirmed within the target number of confirmations
     * @param confTarget target number of confirmations
     * @param sufficientTxVal required average number of transactions per block in a bucket range
     * @param minSuccess the success probability we require
     * @param nBlockHeight the current block height
     */
    double EstimateMedianVal(int confTarget, double sufficientTxVal,
                             double minSuccess, unsigned int nBlockHeight,
                             EstimationResult *result = nullptr) const;
    
    unsigned int GetMaxConfirms() const { return scale * confAvg.size(); }