When I run `scantxoutset` via RPC using big range (e.g. 10000) on XPUB, the progress report indicator (`scantxoutset status`) reports 100% at start (while the keys are being derived). This is most probably the result of the previous operation. The progress is only reset to zero when the actual scan starts. I would expect the progress is set to zero before the keys are being derived.

Output of periodic calls to `scantxoutset status` while performing long operation.

```
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 100 }
{ progress: 0 }
{ progress: 3 }
{ progress: 6 }
{ progress: 9 }
{ progress: 12 }
{ progress: 15 }
{ progress: 17 }
{ progress: 20 }
{ progress: 23 }
{ progress: 26 }
{ progress: 29 }
{ progress: 32 }
{ progress: 35 }
{ progress: 37 }
{ progress: 40 }
{ progress: 43 }
{ progress: 46 }
{ progress: 49 }
{ progress: 51 }
{ progress: 54 }
{ progress: 57 }
{ progress: 60 }
{ progress: 63 }
{ progress: 66 }
{ progress: 68 }
{ progress: 71 }
{ progress: 74 }
{ progress: 77 }
{ progress: 80 }
{ progress: 82 }
{ progress: 85 }
{ progress: 88 }
{ progress: 91 }
{ progress: 94 }
{ progress: 97 }
{ progress: 100 }
```
const UniValue stats_univalue = request.params[1].get_array();
        for (unsigned int i = 0; i < stats_univalue.size(); i++) {
            const std::string stat = stats_univalue[i].get_str();
            stats.insert(stat);
        }
    }
    const CBlock block = GetBlockChecked(pindex);
    const CBlockUndo blockUndo = GetUndoChecked(pindex);
    const bool do_all = stats.size() == 0; 
    const bool do_mediantxsize = do_all || stats.count("mediantxsize") != 0;
    const bool do_medianfee = do_all || stats.count("medianfee") != 0;
    const bool do_feerate_percentiles = do_all || stats.count("feerate_percentiles") != 0;
    const bool loop_inputs = do_all || do_medianfee || do_feerate_percentiles ||
        SetHasKeys(stats, "utxo_size_inc", "totalfee", "avgfee", "avgfeerate", "minfee", "maxfee", "minfeerate", "maxfeerate");
    const bool loop_outputs = do_all || loop_inputs || stats.count("total_out");
    const bool do_calculate_size = do_mediantxsize ||
        SetHasKeys(stats, "total_size", "avgtxsize", "mintxsize", "maxtxsize", "swtotal_size");
    const bool do_calculate_weight = do_all || SetHasKeys(stats, "total_weight", "avgfeerate", "swtotal_weight", "avgfeerate", "feerate_percentiles", "minfeerate", "maxfeerate");
    const bool do_calculate_sw = do_all || SetHasKeys(stats, "swtxs", "swtotal_size", "swtotal_weight");
    CAmount maxfee = 0;
    CAmount maxfeerate = 0;
    CAmount minfee = MAX_MONEY;
    CAmount minfeerate = MAX_MONEY;
    CAmount total_out = 0;
    CAmount totalfee = 0;
    int64_t inputs = 0;
    int64_t maxtxsize = 0;
    int64_t mintxsize = MAX_BLOCK_SERIALIZED_SIZE;
    int64_t outputs = 0;
    int64_t swtotal_size = 0;