diff --git a/build.sh b/build.sh
index 4ce8b01..745a137 100755
--- a/build.sh
+++ b/build.sh
@@ -75,7 +75,7 @@ buildp_dispatch_pkg_state() {
 		if [ "${ARG_VERBOSE:-0}" -ge 2 ]; then
 			cat "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log";
 		fi;
-		rtl_log_msg info_end "Finished \`%s' build." "${_pkg_name}"; ;;
+		rtl_log_msg info_end "[% 3d%%] [%03d/%03d] Finished \`%s' build." "$(((100*${4} + ${5}/2)/${5}))" "${4}" "${5}" "${_pkg_name}"; ;;
 	start_pkg_child)
 		if [ "${PKG_NO_LOG_VARS:-0}" -eq 0 ]; then
 			rtl_log_env_vars "build" $(rtl_get_vars_fast "^PKG_");
diff --git a/subr/ex_pkg_dispatch.subr b/subr/ex_pkg_dispatch.subr
index 669357c..edba315 100644
--- a/subr/ex_pkg_dispatch.subr
+++ b/subr/ex_pkg_dispatch.subr
@@ -68,7 +68,7 @@ exp_pkg_dispatch_group() {
 		case "${_pipe_msg%% *}" in
 		done)	_pkg_name="${_pipe_msg#done * }"; : $((EXP_PKG_DISPATCH_NJOBS-=1));
 			EX_PKG_FINISHED="$(rtl_lconcat "${EX_PKG_FINISHED}" "${_pkg_name}")";
-			"${_dispatch_fn}" finish_pkg ${_pipe_msg#done };
+			"${_dispatch_fn}" finish_pkg ${_pipe_msg#done } "${EXP_PKG_DISPATCH_COUNT}" "${EXP_PKG_DISPATCH_COUNT_MAX}";
 			EX_PKG_NAMES="$(rtl_lfilter "${EX_PKG_NAMES}" "${_pkg_name}")";
 			EX_PKG_DISPATCH_WAIT="$(rtl_lfilter "${EX_PKG_DISPATCH_WAIT}" "${_pkg_name}")";
 			if [ -n "${EX_PKG_NAMES}" ] && [ "${_rc}" -eq 0 ]; then