diff --git a/exec/load/dd_lightbar_menu.js b/exec/load/dd_lightbar_menu.js
index 60d20e700fecaf5b386f322ca46ba14760e31aae..eda8baab21d35e31187e6497fca6029ca496039a 100644
--- a/exec/load/dd_lightbar_menu.js
+++ b/exec/load/dd_lightbar_menu.js
@@ -3434,9 +3434,6 @@ function substrWithAttrCodes(pStr, pStartIdx, pLen)
 	var screenLen = console.strlen(pStr);
 	if (typeof(pStartIdx) === "number" && pStartIdx >= 0 && pStartIdx < screenLen)
 		startIdx = pStartIdx;
-	var len = 0;
-	if (typeof(pLen) === "number" && pLen <= screenLen - startIdx)
-		len = pLen;
 
 	// Find the real start index.  If there are Synchronet attribute 
 	startIdx = printedToRealIdxInStr(pStr, startIdx);
diff --git a/xtrn/DDAreaChoosers/DDMsgAreaChooser.js b/xtrn/DDAreaChoosers/DDMsgAreaChooser.js
index 9647f7b0ac66429a34ccc2ec5bf1d68a92a8fa6a..cab81e77bc48d1dd26d0c31c75308e664ecf5f41 100644
--- a/xtrn/DDAreaChoosers/DDMsgAreaChooser.js
+++ b/xtrn/DDAreaChoosers/DDMsgAreaChooser.js
@@ -60,6 +60,9 @@
  *                            Area change header display bug fix
  * 2023-09-16 Eric Oulashin   Version 1.37
  *                            Releasing this version
+ * 2023-10-07 Eric Oulashin   Version 1.38
+ *                            Fix for name collapsing mode with the lightbar interface: No longer gets stuck
+ *                            in a loop when choosing a sub-board.
 */
 
 // TODO: In the area list, the 10,000ths digit (for # posts) is in a different color)
@@ -103,8 +106,8 @@ if (system.version_num < 31400)
 }
 
 // Version & date variables
-var DD_MSG_AREA_CHOOSER_VERSION = "1.37";
-var DD_MSG_AREA_CHOOSER_VER_DATE = "2023-09-16";
+var DD_MSG_AREA_CHOOSER_VERSION = "1.38";
+var DD_MSG_AREA_CHOOSER_VER_DATE = "2023-10-07";
 
 // Keyboard input key codes
 var CTRL_H = "\x08";
@@ -585,8 +588,9 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx)
 		return;
 	}
 	var level = (typeof(pLevel) === "number" ? pLevel : 1);
-	if ((level < 1) || (level > 3))
+	if (level < 1 || level > 3)
 		return;
+
 	else if (level == 1)
 	{
 		// If there are no sub-boards in the given group index, then see if there's a next group with
@@ -618,7 +622,7 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx)
 		}
 	}
 
-	var chooseGroup = (pLevel == 1);
+	var chooseGroup = (level == 1);
 
 	// Clear the screen, write the header, help line, and list header(s)
 	console.clear("\x01n");
@@ -639,7 +643,6 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx)
 		var returnedMenuIdx = msgAreaMenu.GetVal(drawMenu);
 		drawMenu = true;
 		var lastUserInputUpper = (typeof(msgAreaMenu.lastUserInput) === "string" ? msgAreaMenu.lastUserInput.toUpperCase() : "");
-		//if (user.is_sysop) console.print("\x01n\r\nlastUserInputUpper: " + lastUserInputUpper + ":\r\n\x01p"); // Temporary
 		if (typeof(returnedMenuIdx) === "number")
 			chosenIdx = returnedMenuIdx;
 		// If userChoice is not a number, then it should be null in this case,
@@ -865,7 +868,13 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx)
 				var defaultSubIdx = chosenIdx == bbs.curgrp ? bbs.cursub : 0;
 				var subCodeBackup = bbs.cursub_code;
 				var chosenSubBoardIdx = this.SelectMsgArea_Lightbar(2, chosenIdx, defaultSubIdx);
-				if (typeof(chosenSubBoardIdx) === "number" && chosenSubBoardIdx > -1)
+				// chosenSubBoardIdx could actually be a boolean and could be false (returned
+				// when pLevel is 3 and the user chose a sub-board), so check its type and
+				// act accordingly.
+				var retValType = typeof(chosenSubBoardIdx);
+				if (retValType === "boolean")
+					continueOn = chosenSubBoardIdx;
+				else if (typeof(chosenSubBoardIdx) === "number" && chosenSubBoardIdx > -1)
 				{
 					// Set the current sub-board
 					if (this.useSubCollapsing)
@@ -876,10 +885,17 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx)
 				}
 				else
 				{
-					// A message sub-board was not chosen, so we'll have to re-draw
-					// the header and key help line
-					this.DisplayListHdrLines(this.areaChangeHdrLines.length+1, chooseGroup, pGrpIdx);
-					this.WriteKeyHelpLine();
+					// If the sub-board changed (probably at level 3 because name
+					// collapsing is enabled), then exit here.
+					if (bbs.cursub_code != subCodeBackup)
+						continueOn = false;
+					else
+					{
+						// A message sub-board was not chosen, so we'll have to re-draw
+						// the header and key help line
+						this.DisplayListHdrLines(this.areaChangeHdrLines.length+1, chooseGroup, pGrpIdx);
+						this.WriteKeyHelpLine();
+					}
 				}
 			}
 			else if (level == 2) // Choosing a sub-board
@@ -898,8 +914,14 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx)
 						if (chosenSubSubBoardIdx > -1)
 						{
 							// Set the current message sub-board
+							//bbs.cursub_code = this.group_list[pGrpIdx].sub_list[chosenIdx].sub_subboard_list[chosenSubSubBoardIdx].code;
 							bbs.cursub_code = this.group_list[pGrpIdx].sub_list[chosenIdx].sub_subboard_list[chosenSubSubBoardIdx].code;
 							continueOn = false;
+							//return chosenSubSubBoardIdx;
+							// Return a false here so that after this function is called by itself when
+							// pLevel is 2, it will know that a sub-board has been chosen and will set
+							// continueOn to false so that the loop won't continue from there.
+							return false;
 						}
 						else
 						{
@@ -917,7 +939,9 @@ function DDMsgAreaChooser_SelectMsgArea_Lightbar(pLevel, pGrpIdx, pSubIdx)
 					return chosenIdx; // Return the chosen file directory index
 			}
 			else if (level == 3)
+			{
 				return chosenIdx; // Return the chosen subdirectory index
+			}
 		}
 	}
 }
diff --git a/xtrn/DDAreaChoosers/readme.txt b/xtrn/DDAreaChoosers/readme.txt
index ddba43a44e9d2e81b41a6f506e9b9f5f27d10a43..285ecc954071b72e3a6fe3f795b5d08474532776 100644
--- a/xtrn/DDAreaChoosers/readme.txt
+++ b/xtrn/DDAreaChoosers/readme.txt
@@ -1,6 +1,6 @@
                      Digital Distortion Area Choosers
-                              Version 1.38/1.37
-                        Release date: 2023-09-17
+                              Version 1.38
+                        Release date: 2023-10-07
 
                                   by
 
diff --git a/xtrn/DDAreaChoosers/version_history.txt b/xtrn/DDAreaChoosers/version_history.txt
index 23a3ca83fd31470082b4b9be14a3abcf88f7de67..31e553c7d9720fb950172ef02d5551b45a98889e 100644
--- a/xtrn/DDAreaChoosers/version_history.txt
+++ b/xtrn/DDAreaChoosers/version_history.txt
@@ -5,6 +5,11 @@ Revision History (change log)
 =============================
 Version  Date         Description
 -------  ----         -----------
+1.38     2023-10-07   Message area chooser fix for name collapsing mode with the
+                      lightbar interface: No longer gets stuck in a loop when
+                      choosing a sub-board. The message area chooser version
+                      was 1.37 before and has been updated to 1.38, which
+                      matches the file area chooser.
 1.38     2023-09-17   File area chooser: Bug fix for searching with name
                       collapsing
 1.37     2023-09-16   Header line bug fix