diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js
index 9569933e92af6fd0e65baed6f3a5d4b999b16dcd..f8b049e71d27348bc19289597e8d8693726dd298 100644
--- a/xtrn/DDMsgReader/DDMsgReader.js
+++ b/xtrn/DDMsgReader/DDMsgReader.js
@@ -117,6 +117,9 @@
  *                              previous version.
  * 2022-02-25 Eric Oulashin     Version 1.45b
  *                              Fixed message list time colors for wide terminals (above 80 columns)
+ *                              Version 1.45c
+ *                              Actually fixed wide terminal colors this time (and fixed vote
+ *                              score display in the message list)
  */
 
 
@@ -237,7 +240,7 @@ if (system.version_num < 31500)
 }
 
 // Reader version information
-var READER_VERSION = "1.45b";
+var READER_VERSION = "1.45c";
 var READER_DATE = "2022-02-25";
 
 // Keyboard key codes for displaying on the screen
@@ -813,6 +816,7 @@ function DigDistMsgReader(pSubBoardCode, pScriptArgs)
 	this.CanEdit = DigDistMsgReader_CanEdit;
 	this.CanQuote = DigDistMsgReader_CanQuote;
 	this.ReadConfigFile = DigDistMsgReader_ReadConfigFile;
+	// TODO: Is this.DisplaySyncMsgHeader even needed anymore?  Looks like it's not being called.
 	this.DisplaySyncMsgHeader = DigDistMsgReader_DisplaySyncMsgHeader;
 	this.GetMsgHdrFilenameFull = DigDistMsgReader_GetMsgHdrFilenameFull;
 	this.GetMsgHdrByIdx = DigDistMsgReader_GetMsgHdrByIdx;
@@ -943,14 +947,19 @@ function DigDistMsgReader(pSubBoardCode, pScriptArgs)
 	// Variable field widths: From, to, and subject
 	this.FROM_LEN = (console.screen_columns * (15/console.screen_columns)).toFixed(0);
 	this.TO_LEN = (console.screen_columns * (15/console.screen_columns)).toFixed(0);
-	var colsLeftForSubject = console.screen_columns-this.MSGNUM_LEN-this.DATE_LEN-this.TIME_LEN-this.FROM_LEN-this.TO_LEN-6; // 6 to account for the spaces
-	this.SUBJ_LEN = (console.screen_columns * (colsLeftForSubject/console.screen_columns)).toFixed(0);
+	//var colsLeftForSubject = console.screen_columns-this.MSGNUM_LEN-this.DATE_LEN-this.TIME_LEN-this.FROM_LEN-this.TO_LEN-6; // 6 to account for the spaces
+	//this.SUBJ_LEN = (console.screen_columns * (colsLeftForSubject/console.screen_columns)).toFixed(0);
+	this.SUBJ_LEN = console.screen_columns-this.MSGNUM_LEN-this.DATE_LEN-this.TIME_LEN-this.FROM_LEN-this.TO_LEN-6; // 6 to account for the spaces
 	// For showing message scores in the message list
 	this.SCORE_LEN = 4;
 	// Whether or not to show message scores in the message list: Only if the terminal
 	// is at least 86 characters wide and if vote functions exist in the running build
 	// of Synchronet
 	this.showScoresInMsgList = ((console.screen_columns >= 86) && (typeof((new MsgBase("mail")).vote_msg) === "function"));
+	if (this.showScoresInMsgList)
+	{
+		this.SUBJ_LEN -= (this.SCORE_LEN + 1); // + 1 to account for a space
+	}
 
 	// Whether or not the user chose to read a message
 	this.readAMessage = false;
@@ -1512,9 +1521,9 @@ function DigDistMsgReader_PopulateHdrsForCurrentSubBoard()
 		// iterate through all message offsets and get the headers.
 		if (typeof(msgbase.get_all_msg_headers) === "function")
 		{
-			// Pass false to get_all_msg_headers() to tell it not to return vote messages
-			// (the parameter was introduced in Synchronet 3.17+)
-			tmpHdrs = msgbase.get_all_msg_headers(false);
+			// The first parameter is whether to include votes (the parameter was introduced in Synchronet 3.17+).
+			// We used to pass false here.
+			tmpHdrs = msgbase.get_all_msg_headers(true);
 		}
 		else
 		{
@@ -3866,7 +3875,14 @@ function DigDistMsgReader_CreateLightbarMsgListMenu()
 	msgListIdxes.toNameEnd = msgListIdxes.toNameStart + +this.TO_LEN + 1;
 	msgListIdxes.subjStart = msgListIdxes.toNameEnd;
 	msgListIdxes.subjEnd = msgListIdxes.subjStart + +this.SUBJ_LEN + 1;
-	msgListIdxes.dateStart = msgListIdxes.subjEnd;
+	if (this.showScoresInMsgList)
+	{
+		msgListIdxes.scoreStart = msgListIdxes.subjEnd;
+		msgListIdxes.scoreEnd = msgListIdxes.scoreStart + +this.SCORE_LEN + 1;
+		msgListIdxes.dateStart = msgListIdxes.scoreEnd;
+	}
+	else
+		msgListIdxes.dateStart = msgListIdxes.subjEnd;
 	msgListIdxes.dateEnd = msgListIdxes.dateStart + +this.DATE_LEN + 1;
 	msgListIdxes.timeStart = msgListIdxes.dateEnd;
 	msgListIdxes.timeEnd = console.screen_columns - 1; // msgListIdxes.timeStart + +this.TIME_LEN + 1;
@@ -3904,6 +3920,16 @@ function DigDistMsgReader_CreateLightbarMsgListMenu()
 		                       {start: msgListIdxes.dateStart, end: msgListIdxes.dateEnd, attrs: this.colors.msgListDateHighlightColor},
 		                       {start: msgListIdxes.timeStart, end: msgListIdxes.timeEnd, attrs: this.colors.msgListTimeHighlightColor}]
 	});
+	// If we are to show message vote scores in the list (i.e., if the
+	// user's terminal is wide enough), then splice in color specifiers
+	// for the score column.
+	if (this.showScoresInMsgList)
+	{
+		msgListMenu.colors.itemColor.splice(5, 0, {start: msgListIdxes.scoreStart, end: msgListIdxes.scoreEnd, attrs: this.colors.msgListScoreColor});
+		msgListMenu.colors.altItemColor.splice(5, 0, {start: msgListIdxes.scoreStart, end: msgListIdxes.scoreEnd, attrs: this.colors.msgListToUserScoreColor});
+		msgListMenu.colors.selectedItemColor.splice(5, 0, {start: msgListIdxes.scoreStart, end: msgListIdxes.scoreEnd, attrs: this.colors.msgListScoreHighlightColor + this.colors.msgListHighlightBkgColor});
+		msgListMenu.colors.altSelectedItemColor.splice(5, 0, {start: msgListIdxes.scoreStart, end: msgListIdxes.scoreEnd, attrs: this.colors.msgListScoreHighlightColor + this.colors.msgListHighlightBkgColor});
+	}
 
 	msgListMenu.multiSelect = false;
 	msgListMenu.ampersandHotkeysInItems = false;
@@ -3928,7 +3954,9 @@ function DigDistMsgReader_CreateLightbarMsgListMenu()
 	msgListMenu.GetItem = function(pItemIndex) {
 		var menuItemObj = this.MakeItemWithRetval(-1);
 		var itemIdx = (this.msgReader.reverseListOrder ? this.msgReader.NumMessages() - pItemIndex - 1 : pItemIndex);
-		var msgHdr = this.msgReader.GetMsgHdrByIdx(itemIdx);
+		// In order to get vote score information (displayed if the user's terminal is wide
+		// enough), the 2nd parameter to GetMsgHdrByIdx() should be true.
+		var msgHdr = this.msgReader.GetMsgHdrByIdx(itemIdx, this.msgReader.showScoresInMsgList);
 		if (msgHdr != null)
 		{
 			// When setting the item text, call PrintMessageInfo with true as
@@ -8460,9 +8488,7 @@ function DigDistMsgReader_GetMsgHdrByIdx(pMsgIdx, pExpandFields, pMsgbase)
 		}
 	}
 	else
-	{
 		msgHdr = getHdrFromMsgbase(pMsgbase, this.subBoardCode, true, pMsgIdx, pExpandFields);
-	}
 	if (msgHdr == null)
 		msgHdr = getBogusMsgHdr();
 	return msgHdr;
@@ -9452,7 +9478,7 @@ function DigDistMsgReader_ReplyToMsg(pMsgHdr, pMsgText, pPrivate, pMsgIdx)
 				{
 					// Pass false to get_all_msg_headers() to tell it not to return vote messages
 					// (the parameter was introduced in Synchronet 3.17+)
-					this.FilterMsgHdrsIntoHdrsForCurrentSubBoard(msgbase.get_all_msg_headers(false), true);
+					this.FilterMsgHdrsIntoHdrsForCurrentSubBoard(msgbase.get_all_msg_headers(true), true);
 				}
 				else
 				{
@@ -14107,7 +14133,7 @@ function DigDistMsgReader_VoteOnMessage(pMsgHdr, pRemoveNLsFromVoteText)
 				var originalMsgIdx = this.hdrsForCurrentSubBoardByMsgNum[pMsgHdr.number];
 				if (typeof(msgbase.get_all_msg_headers) === "function")
 				{
-					var tmpHdrs = msgbase.get_all_msg_headers();
+					var tmpHdrs = msgbase.get_all_msg_headers(true);
 					if (tmpHdrs.hasOwnProperty(pMsgHdr.number))
 					{
 						this.hdrsForCurrentSubBoard[originalMsgIdx] = tmpHdrs[pMsgHdr.number];
@@ -14463,7 +14489,7 @@ function DigDistMsgReader_RefreshMsgHdrInArrays(pMsgNum)
 	{
 		if (this.hdrsForCurrentSubBoardByMsgNum.hasOwnProperty(pMsgNum))
 		{
-			var msgHdrs = msgbase.get_all_msg_headers();
+			var msgHdrs = msgbase.get_all_msg_headers(true);
 			if (msgHdrs.hasOwnProperty(pMsgNum))
 			{
 				var msgIdx = this.hdrsForCurrentSubBoardByMsgNum[pMsgNum];
@@ -14500,8 +14526,9 @@ function DigDistMsgReader_RecalcMsgListWidthsAndFormatStrs(pMsgNumLen)
 	// Variable field widths: From, to, and subject
 	this.FROM_LEN = (console.screen_columns * (15/console.screen_columns)).toFixed(0);
 	this.TO_LEN = (console.screen_columns * (15/console.screen_columns)).toFixed(0);
-	var colsLeftForSubject = console.screen_columns-this.MSGNUM_LEN-this.DATE_LEN-this.TIME_LEN-this.FROM_LEN-this.TO_LEN-6; // 6 to account for the spaces
-	this.SUBJ_LEN = (console.screen_columns * (colsLeftForSubject/console.screen_columns)).toFixed(0);
+	//var colsLeftForSubject = console.screen_columns-this.MSGNUM_LEN-this.DATE_LEN-this.TIME_LEN-this.FROM_LEN-this.TO_LEN-6; // 6 to account for the spaces
+	//this.SUBJ_LEN = (console.screen_columns * (colsLeftForSubject/console.screen_columns)).toFixed(0);
+	this.SUBJ_LEN = console.screen_columns-this.MSGNUM_LEN-this.DATE_LEN-this.TIME_LEN-this.FROM_LEN-this.TO_LEN-6; // 6 to account for the spaces
 
 	if (this.showScoresInMsgList)
 	{
@@ -19202,7 +19229,7 @@ function getHdrFromMsgbase(pMsgbase, pSubBoardCode, pByIdx, pMsgIdxOrNum, pExpan
 		if (pByIdx)
 			getMsgHdr = ((pMsgIdxOrNum >= 0) && (pMsgIdxOrNum < msgbase.total_msgs))
 		if (getMsgHdr)
-			msgHdr = msgbase.get_msg_header(pByIdx, pMsgIdxOrNum, pExpandFields);
+			msgHdr = msgbase.get_msg_header(pByIdx, pMsgIdxOrNum, pExpandFields, true); // Last true: Include votes
 		if (pMsgbase == null)
 			msgbase.close();
 	}
@@ -19576,7 +19603,7 @@ function getAttrsBeforeStrIdx(pStr, pIdx)
 //               upvotes: The number of upvotes
 //               downvotes: The number of downvotes
 //               voteScore: The overall vote score
-function getMsgUpDownvotesAndScore(pMsgHdr)
+function getMsgUpDownvotesAndScore(pMsgHdr, pVerbose)
 {
 	var retObj = {
 		foundVoteInfo: false,
@@ -19594,6 +19621,20 @@ function getMsgUpDownvotesAndScore(pMsgHdr)
 		else
 			retObj.downvotes = pMsgHdr.total_votes - pMsgHdr.upvotes;
 		retObj.voteScore = pMsgHdr.upvotes - retObj.downvotes;
+		if (pVerbose && user.is_sysop)
+		{
+			console.print("\1n\r\n");
+			console.print("Vote information from header:\r\n");
+			console.print("Upvotes: " + pMsgHdr.upvotes + "\r\n");
+			console.print("Downvotes: " + retObj.downvotes + "\r\n");
+			console.print("Score: " + retObj.voteScore + "\r\n");
+			console.pause();
+		}
+	}
+	else
+	{
+		if (pVerbose && user.is_sysop)
+			console.print("\1n\r\nMsg header does NOT have needed vote info\r\n\1p");
 	}
 
 	return retObj;
@@ -19608,6 +19649,9 @@ function getMsgUpDownvotesAndScore(pMsgHdr)
 // Return value: The message body, with any initial color removed
 function removeInitialColorFromMsgBody(pMsgBody)
 {
+	if (pMsgBody == null)
+		return "";
+
 	var msgBody = pMsgBody;
 
 	msgBodyLines = pMsgBody.split("\r\n", 3);
diff --git a/xtrn/DDMsgReader/readme.txt b/xtrn/DDMsgReader/readme.txt
index 8a5668cb471cb8109d6dae7218454b2e8d8d9a59..7d74f64d5ca0f737fe840302413a272f121063a4 100644
--- a/xtrn/DDMsgReader/readme.txt
+++ b/xtrn/DDMsgReader/readme.txt
@@ -1,5 +1,5 @@
                       Digital Distortion Message Reader
-                                 Version 1.45b
+                                 Version 1.45c
                            Release date: 2022-02-25
 
                                      by
diff --git a/xtrn/DDMsgReader/revision_history.txt b/xtrn/DDMsgReader/revision_history.txt
index 2d76d5625be81e072000b067b2f2654714b2c3dc..8f8a42475dc1146820e5a1079bcdb063ef55d2a7 100644
--- a/xtrn/DDMsgReader/revision_history.txt
+++ b/xtrn/DDMsgReader/revision_history.txt
@@ -5,6 +5,8 @@ Revision History (change log)
 =============================
 Version  Date         Description
 -------  ----         -----------
+1.45c    2020-02-25   Fixed score display and related colors in the message list
+                      for wide terminals
 1.45b    2022-02-25   Fixed message list time colors for wide terminals (above
                       80 columns)
 1.45     2022-02-24   Fixed message scanning & searching issue introduced in the