--- a/scripts/rc.news.in
+++ b/scripts/rc.news.in
@@ -157,8 +157,12 @@ if [ "$OVMETHOD" = "ovdb" ]; then
 fi
 
 ##  Start the show.
+##  When using systemd, the daemon must be started last with exec to keep
+##  the same PID of this script.
+if [ -z "$NOTIFY_SOCKET" -a -z "$LISTEN_PID" ]; then
 echo 'Starting innd.'
 eval ${WHAT} ${RFLAG} ${INNFLAGS}
+fi
 
 # Gee, looks like lisp, doesn't it?
 ${DOINNWATCH} && {
@@ -188,3 +192,9 @@ done &
 if [ -f ${PATHBIN}/rc.news.local ] ; then
     ${PATHBIN}/rc.news.local start
 fi
+
+if [ "$NOTIFY_SOCKET" -o "$LISTEN_PID" ]; then
+    echo 'Starting innd.'
+    eval exec ${WHAT} -f ${RFLAG} ${INNFLAGS}
+fi
+
