updated for version 7.0044
diff --git a/src/misc1.c b/src/misc1.c
index 4c2b55e..4d7cf60 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3092,10 +3092,15 @@
     long pn;
 
     if (global_busy	    /* no messages now, wait until global is finished */
-	    || keep_msg != NULL /* there is a message already, skip this one */
 	    || !messaging())  /* 'lazyredraw' set, don't do messages now */
 	return;
 
+    /* We don't want to overwrite another important message, but do overwrite
+     * a previous "more lines" or "fewer lines" message, so that "5dd" and
+     * then "put" reports the last action. */
+    if (keep_msg != NULL && !keep_msg_more)
+	return;
+
     if (n > 0)
 	pn = n;
     else
@@ -3123,6 +3128,7 @@
 	{
 	    set_keep_msg(msg_buf);
 	    keep_msg_attr = 0;
+	    keep_msg_more = TRUE;
 	}
     }
 }