Queue - How is Estimated Hold Time math / h-to set manually?

Hello,

With [reportholdtime=yes] to announce the minutes remaining, how does asterisk calculates the estimative for a queued person?
How Can I modify this calculations?

I set up a queue with 2 agents, there is 1 logged in, 1 caller speaking with this attendant for 6 minutes already, and 2 people in queue.

The 1º queued person hears he is next;
The second one hears “you’re number 2 and the estimated hold time is 3 minutes”

When the attendant was talking for 10 minutes the 2nd person holdtime was estimated in 7 min…

Any clues?

Is there a way I can use some funtcion, variable, real time database, or anything to do my own calculations?

Thanks!

musiconhold = default
strategy = ringall
timeout = 15
retry = 5
wrapuptime=0
maxlen = 0
announce-frequency = 10
announce-holdtime = yes
joinempty = yes
reportholdtime = yes
memberdelay = 1
member => Agent/1001
member => Agent/1002