Forget for one minute about all that callback stuff. I'm totally satisfied with round-off value, i don't need exact otherwise calculation will be too slow because LerchPhi is slow itself.
For exact value in this example you can apply
local lv:=convert(eval(p),list), arrdim:=eval(op(2,op(2,(op(2,lv))))),arrname:=eval(op(op(2,eval(p))));
lv := eval(subsop(1 = 'arrname = 'Array'(1 .. arrdim)', lv));
on FMain as parameter. Sorry that you waste your time on this.
Let's consider much simpler example:
p:=proc(x) local larr; larr:=Array(1..3); larr:=x; larr:=larr*larr; larr:=larr/x; end proc;
Even with Digits=10 evalf(p(10^180)) returns correct value 10^180 while
evalhf(p(10^180)) returns Float(infinity). And with former example i showed that it's not enough to have double precision for practical functions while software floats are great in that sense that they not seem to have bounds for exponenta, i.e. Digits applicable for mantissa only.