diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js
index 6ff882c2c74cbd0616819c34116caf55cb859641..6ff4f6c50607814363ce44f54595017d4de0b9e4 100644
--- a/xtrn/DDMsgReader/DDMsgReader.js
+++ b/xtrn/DDMsgReader/DDMsgReader.js
@@ -205,6 +205,9 @@
  * 2024-12-04 Eric Oulashin     Version 1.96g
  *                              Bug fix: For indexed newscan without snap-to-new, go back to
  *                              remembering the user's previously selected sub-board
+ * 2024-12-18 Eric Oulashin     Version 1.96h
+ *                              When reading messages with the scrolling interface, pay attention
+ *                              to user input timeout via a check of the last user input.
  */
 
 "use strict";
@@ -312,8 +315,8 @@ var hexdump = load('hexdump_lib.js');
 
 
 // Reader version information
-var READER_VERSION = "1.96g";
-var READER_DATE = "2024-12-04";
+var READER_VERSION = "1.96h";
+var READER_DATE = "2024-12-18";
 
 // Keyboard key codes for displaying on the screen
 var UP_ARROW = ascii(24);
@@ -6990,6 +6993,10 @@ function DigDistMsgReader_ReadMessageEnhanced_Scrollable(msgHeader, allowChgMsgA
 					retObj.nextAction = ACTION_QUIT;
 				continueOn = false;
 				break;
+			case "": // User input timeout
+				retObj.nextAction = ACTION_QUIT;
+				continueOn = false;
+				break;
 			default:
 				writeMessage = false;
 				break;
@@ -20194,6 +20201,7 @@ function scrollTextLines(pTxtLines, pTopLineIdx, pTxtAttrib, pWriteTxtLines, pTo
 					writeTxtLines = true;
 				}
 				break;
+			case "": // User input timeout
 			default:
 				continueOn = false;
 				break;
diff --git a/xtrn/DDMsgReader/ddmr_cfg.js b/xtrn/DDMsgReader/ddmr_cfg.js
index 67f00d0c4140a9f5c0b3bf53e8376f8a156dac69..3ccc3fce7afd890de04694ad0fc5582816a992f9 100644
--- a/xtrn/DDMsgReader/ddmr_cfg.js
+++ b/xtrn/DDMsgReader/ddmr_cfg.js
@@ -5,7 +5,7 @@
 // If you have DDMsgReader in a directory other than xtrn/DDMsgReader, then the changes to
 // DDMsgReader.cfg will be saved in that directory (assuming you're running ddmr_cfg.js from
 // that same directory).
-// Currently for DDMsgReader 1.96g.
+// Currently for DDMsgReader 1.96h.
 //
 // If you're running DDMsgReader from xtrn/DDMsgReader (the standard location) and you want
 // to save the configuration file there (rather than sbbs/mods), you can use one of the
@@ -18,7 +18,7 @@ require("sbbsdefs.js", "P_NONE");
 require("uifcdefs.js", "UIFC_INMSG");
 
 
-if (!uifc.init("DigDist. Message Reader 1.96g Configurator"))
+if (!uifc.init("DigDist. Message Reader 1.96h Configurator"))
 {
 	print("Failed to initialize uifc");
 	exit(1);
diff --git a/xtrn/DDMsgReader/readme.txt b/xtrn/DDMsgReader/readme.txt
index ae7a58bdd5bf216bb64d52c63570ee393d15e646..479b183c4f8ac8d3f92a891fd846e3b48f910b81 100644
--- a/xtrn/DDMsgReader/readme.txt
+++ b/xtrn/DDMsgReader/readme.txt
@@ -1,6 +1,6 @@
                       Digital Distortion Message Reader
-                                 Version 1.96g
-                           Release date: 2024-12-04
+                                 Version 1.96h
+                           Release date: 2024-12-18
 
                                      by
 
diff --git a/xtrn/DDMsgReader/revision_history.txt b/xtrn/DDMsgReader/revision_history.txt
index 04ccaa9545e48d73b199042363750fd4e113e4a9..db6bf11a1e3160b190bc5cacbf39e8de67f477a9 100644
--- a/xtrn/DDMsgReader/revision_history.txt
+++ b/xtrn/DDMsgReader/revision_history.txt
@@ -5,6 +5,9 @@ Revision History (change log)
 =============================
 Version  Date         Description
 -------  ----         -----------
+1.96h    2024-12-18   Bug fix: When reading messages with the scrolling
+                      interface, it now exits from user input timeout as it
+                      should.
 1.96g    2024-12-04   Bug fix: For indexed newscan without snap-to-new, go back
                       to remembering the user's previously selected sub-board
 1.96f    2024-12-04   New user option & behavior: When selecting/toggling