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

```
double max_filter_fee_rate,
                                   double fee_filter_spacing)
{
    std::set<double> fee_set;
    const CAmount min_fee_limit{std::max(CAmount(1), min_incremental_fee.GetFeePerK() / 2)};
    fee_set.insert(0);
    for (double bucket_boundary = min_fee_limit;
         bucket_boundary <= max_filter_fee_rate;
         bucket_boundary *= fee_filter_spacing) {
        fee_set.insert(bucket_boundary);
    }
    return fee_set;
}
FeeFilterRounder::FeeFilterRounder(const CFeeRate& minIncrementalFee, FastRandomContext& rng)
    : m_fee_set{MakeFeeSet(minIncrementalFee, MAX_FILTER_FEERATE, FEE_FILTER_SPACING)},
      insecure_rand{rng}
{
}
CAmount FeeFilterRounder::round(CAmount currentMinFee)
{
    AssertLockNotHeld(m_insecure_rand_mutex);
    std::set<double>::iterator it = m_fee_set.lower_bound(currentMinFee);
    if (it == m_fee_set.end() ||
        (it != m_fee_set.begin() &&
         WITH_LOCK(m_insecure_rand_mutex, return insecure_rand.rand32()) % 3 != 0)) {
        --it;
    }
    return static_cast<CAmount>(*it);
}