diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js
index 2c86f11e482b5b4139fd83ea7f4dfa86458d682d..dee7f162de5fe0ab8ce64ed96b5278beb6978ec1 100644
--- a/xtrn/DDMsgReader/DDMsgReader.js
+++ b/xtrn/DDMsgReader/DDMsgReader.js
@@ -185,6 +185,9 @@
  *                              window, if there's an area change header in use, refresh it
  *                              and the header lines, since the scrollable help window would
  *                              display over them.
+ * 2024-11-20 Eric Oulashin     Version 1.96c
+ *                              Bug fix: When showing a poll vote from the user, it should
+ *                              show people who've voted - ensure it only counts vote responses
  */
 
 "use strict";
@@ -292,8 +295,8 @@ var hexdump = load('hexdump_lib.js');
 
 
 // Reader version information
-var READER_VERSION = "1.96b";
-var READER_DATE = "2024-11-03";
+var READER_VERSION = "1.96c";
+var READER_DATE = "2024-11-20";
 
 // Keyboard key codes for displaying on the screen
 var UP_ARROW = ascii(24);
@@ -18708,7 +18711,9 @@ function DigDistMsgReader_GetMsgBody(pMsgHdr)
 			if ((msgFromUpper == user.name.toUpperCase()) || (msgFromUpper == user.handle.toUpperCase()))
 			{
 				// Check all the messages in the messagebase after the current one
-				// to find poll response messages
+				// to find ballots for this poll. For ballots, append the 'user voted'
+				// string to the message body.
+
 				// Get the line from text.dat for writing who voted & when.  It
 				// is a format string and should look something like this:
 				//"\r\n\x01n\x01hOn %s, in \x01c%s \x01n\x01c%s\r\n\x01h\x01m%s voted in your poll: \x01n\x01h%s\r\n" 787 PollVoteNotice
@@ -18717,28 +18722,52 @@ function DigDistMsgReader_GetMsgBody(pMsgHdr)
 				// Pass true to get_all_msg_headers() to tell it to return vote messages
 				// (the parameter was introduced in Synchronet 3.17+)
 				var tmpHdrs = msgbase.get_all_msg_headers(true);
+				// Get the current sub-board's group name and configuration name, for use
+				// with the 'user voted' text
+				//var indexRecords = []; // Index records; faster than getting full message header objects
+				var grpName = "";
+				var msgbaseCfgName = "";
+				var msgbase = new MsgBase(this.subBoardCode);
+				if (msgbase.open())
+				{
+					//indexRecords = msgbase.get_index();
+					grpName = msgbase.cfg.grp_name;
+					msgbaseCfgName = msgbase.cfg.name;
+					msgbase.close();
+				}
 				for (var tmpProp in tmpHdrs)
 				{
 					if (tmpHdrs[tmpProp] == null)
 						continue;
-					// If this header's thread_back or reply_id matches the poll message
-					// number, then append the 'user voted' string to the message body.
-					if ((tmpHdrs[tmpProp].thread_back == pMsgHdr.number) || (tmpHdrs[tmpProp].reply_id == pMsgHdr.id))
+					if (tmpHdrs[tmpProp].type == MSG_TYPE_BALLOT && (tmpHdrs[tmpProp].thread_back == pMsgHdr.number || tmpHdrs[tmpProp].reply_id == pMsgHdr.id))
 					{
 						var msgWrittenLocalTime = msgWrittenTimeToLocalBBSTime(tmpHdrs[tmpProp]);
 						var voteDate = strftime("%a %b %d %Y %H:%M:%S", msgWrittenLocalTime);
-						var grpName = "";
-						var msgbaseCfgName = "";
-						var msgbase = new MsgBase(this.subBoardCode);
+						retObj.msgBody += format(userVotedInYourPollText, voteDate, grpName, msgbaseCfgName, tmpHdrs[tmpProp].from, pMsgHdr.subject);
+					}
+				}
+				// we could check the index records this way:
+				/*
+				for (var i = 0; i < indexRecords.length; ++i)
+				{
+					if (Boolean(indexRecords[i].attr & MSG_VOTE) && indexRecords[i].remsg == pMsgHdr.number)
+					{
+						// Get the 'from' name for this ballot
+						var ballotFromName = "";
 						if (msgbase.open())
 						{
-							grpName = msgbase.cfg.grp_name;
-							msgbaseCfgName = msgbase.cfg.name;
+							// TODO: get_msg_header() is returning null here..?
+							var tmpHdr = msgbase.get_msg_header(false, indexRecords[i].number);
 							msgbase.close();
+							if (tmpHdr != null)
+								ballotFromName = tmpHdr.from;
 						}
-						retObj.msgBody += format(userVotedInYourPollText, voteDate, grpName, msgbaseCfgName, tmpHdrs[tmpProp].from, pMsgHdr.subject);
+						var msgWrittenLocalTime = msgWrittenTimeToLocalBBSTime(indexRecords[i]);
+						var voteDate = strftime("%a %b %d %Y %H:%M:%S", msgWrittenLocalTime);
+						retObj.msgBody += format(userVotedInYourPollText, voteDate, grpName, msgbaseCfgName, ballotFromName, pMsgHdr.subject);
 					}
 				}
+				*/
 			}
 		}
 	}
diff --git a/xtrn/DDMsgReader/ddmr_cfg.js b/xtrn/DDMsgReader/ddmr_cfg.js
index 2249d47104bf31fc614d28313c5d94178f9928b0..fe4b4195930fc8ec46efd069c0c15ca05f44a374 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.96b.
+// Currently for DDMsgReader 1.96c.
 //
 // 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.96b Configurator"))
+if (!uifc.init("DigDist. Message Reader 1.96c Configurator"))
 {
 	print("Failed to initialize uifc");
 	exit(1);
diff --git a/xtrn/DDMsgReader/readme.txt b/xtrn/DDMsgReader/readme.txt
index fa412371dc092638eda280afcd03659db5d3ecbf..381e36e115e128a655dbfe71f0e3961625bd56a5 100644
--- a/xtrn/DDMsgReader/readme.txt
+++ b/xtrn/DDMsgReader/readme.txt
@@ -1,6 +1,6 @@
                       Digital Distortion Message Reader
-                                 Version 1.96b
-                           Release date: 2024-11-03
+                                 Version 1.96c
+                           Release date: 2024-11-20
 
                                      by
 
@@ -1318,7 +1318,7 @@ This is an example of the sub-board menu that appears in indexed mode - And from
 here, the user can choose a sub-board to read:
 
 Description                                                 Total New Last Post
-���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
     AGN GEN - General Chat                                   1004  0 2023-04-02
     AGN BBS - BBS Discussion                                 1000  0 2023-01-17
 NEW AGN ART - Art/Demo Scene                                  603  1 2023-04-02
@@ -1327,7 +1327,7 @@ NEW AGN ART - Art/Demo Scene                                  603  1 2023-04-02
     AGN L46 - League Scores & Recons                         1000  0 2016-09-10
 NEW AGN TST - Testing Setups                                 2086 10 2023-04-03
     AGN SYS - Sysops Only                                    1000  0 2023-01-19
-��������������� FIDO - FidoNet ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+��������������������������������������������� FIDO - FidoNet ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
 NEW BBS CARNIVAL - BBS Software Chatter                       660  5 2023-04-04
     BBS INTERNET - DOS/Win/OS2/Unix Internet BBS Applicatio    18  0 2023-03-04
     CHWARE - Cheepware Support/Discussion                     111  0 2023-03-16
@@ -1360,20 +1360,20 @@ added for a user will be preserved (DDMsgReader does a bitwise 'or').
 
 A quick-validation set in CFG is a set that includes a security level, flag
 sets, exemptions, restrictions, and additional credits. For example:
-���[���][?]������������������������������������������������������������
-��� Quick-Validation Values ���
-���������������������������������������������������������������������������������
-��� ?0  SL: 5   F1:         ���
-��� ?1  SL: 10  F1:         ���
-��� ?2  SL: 20  F1:         ���
-��� ?3  SL: 30  F1:         ���
-��� ?4  SL: 40  F1:         ���
-��� ?5  SL: 50  F1:         ���
-��� ?6  SL: 60  F1:         ���
-��� ?7  SL: 70  F1:         ���
-��� ?8  SL: 80  F1:         ���
-��� ?9  SL: 90  F1:         ���
-���������������������������������������������������������������������������������
+���������[���������][?]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+��������� Quick-Validation Values ���������
+���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
+��������� ?0  SL: 5   F1:         ���������
+��������� ?1  SL: 10  F1:         ���������
+��������� ?2  SL: 20  F1:         ���������
+��������� ?3  SL: 30  F1:         ���������
+��������� ?4  SL: 40  F1:         ���������
+��������� ?5  SL: 50  F1:         ���������
+��������� ?6  SL: 60  F1:         ���������
+��������� ?7  SL: 70  F1:         ���������
+��������� ?8  SL: 80  F1:         ���������
+��������� ?9  SL: 90  F1:         ���������
+���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
 
 
 9. Drop file for replying to messages with Synchronet message editors
diff --git a/xtrn/DDMsgReader/revision_history.txt b/xtrn/DDMsgReader/revision_history.txt
index 1d78651aae5e61f63eb86a5ad4cde7b1bf303497..510cda6e82801506fa966a67a09c264bfb8527fa 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.96c    2024-11-20   Bug fix: When showing a poll vote from the user, it should
+                      show people who've voted - ensure it only counts vote
+                      responses
 1.96b    2024-11-03   Bug fix: When displaying the new scrollable area change
                       help window, if there's an area change header in use,
                       refresh it and the header lines, since the scrollable help