First idea is don't use pipes, that is almost unreadable.
progress {
window -p +b-b @progress 1 1 200 15
drawrect -f @progress 1 5 0 0 200 15
var %p = $round($calc(($$1 / $$2)*100),1)
if ((%p > 100) || (%p < 0)) {
%p = 100
}
var %x = 0
while (%x <= $calc(%p * 2)) {
drawline @progress 5 2 %x 0 %x 15
%x = %x + 2
}
drawtext @progress 0 "terminal" 8 90 2 %p $chr(37)
}
This looks much better. Now... What did you actually want help with? It all looks okay to me.