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 }
```
mintxsize = std::min(mintxsize, tx_size);
            total_size += tx_size;
        }
        int64_t weight = 0;
        if (do_calculate_weight) {
            weight = GetTransactionWeight(*tx);
            total_weight += weight;
        }
        if (do_calculate_sw && tx->HasWitness()) {
            ++swtxs;
            swtotal_size += tx_size;
            swtotal_weight += weight;
        }
        if (loop_inputs) {
            CAmount tx_total_in = 0;
            const auto& txundo = blockUndo.vtxundo.at(i - 1);
            for (const Coin& coin: txundo.vprevout) {
                const CTxOut& prevoutput = coin.out;
                tx_total_in += prevoutput.nValue;
                utxo_size_inc -= GetSerializeSize(prevoutput, PROTOCOL_VERSION) + PER_UTXO_OVERHEAD;
            }
            CAmount txfee = tx_total_in - tx_total_out;
            CHECK_NONFATAL(MoneyRange(txfee));
            if (do_medianfee) {
                fee_array.push_back(txfee);
            }
            maxfee = std::max(maxfee, txfee);
            minfee = std::min(minfee, txfee);
            totalfee += txfee;