diff --git a/rootfs/etc/services.d/home-assistant/finish b/rootfs/etc/services.d/home-assistant/finish
index 119a90ea3c6cd87fe19d6e9e0dbc19e593135e22..3691583ec81da990e7f2a53f8f55699fc52443ec 100644
--- a/rootfs/etc/services.d/home-assistant/finish
+++ b/rootfs/etc/services.d/home-assistant/finish
@@ -13,8 +13,12 @@ ifelse { s6-test ${1} -eq ${SIGNAL_EXIT_CODE} } {
   # Process terminated by a signal
   define signal ${2}
   foreground { s6-echo "[finish] process received signal ${signal}" }
+  backtick -n new_exit_code { s6-expr 128 + ${signal} }
+  importas -ui new_exit_code new_exit_code
+  foreground { redirfd -w 1 /var/run/s6/env-stage3/S6_STAGE2_EXITED s6-echo -n -- ${new_exit_code} }
   if { s6-test ${signal} -ne ${SIGTERM} }
   s6-svscanctl -t /var/run/s6/services
 }
 
+foreground { redirfd -w 1 /var/run/s6/env-stage3/S6_STAGE2_EXITED s6-echo -n -- ${1} }
 s6-svscanctl -t /var/run/s6/services