   int index = num_digits - sel_col - 1;
   bool lead_zero = true;
 
+  // convert value to a buffer of decimal values, [0-9]
   ulong2buff(buf, num_digits, value);
 
+  // create special underlined selection character including selected digit
   lcd.createChar(SELECT_CHAR, sel_digits[int(buf[index])]);
-  lcd.setCursor(col, row);  // because we lose cursor position after lcd.createChar()!?
+
+  // we set cursor here because we lose cursor position after lcd.createChar()!?
+  // would prefer to set cursor position outside this function, but ไม่เป็นไร.
+  lcd.setCursor(col, row);
+
+  // write each byte of buffer to display, handling leading spaces and selection
   for (int i = 0; i < num_digits; ++i)
   {
     int char_val = buf[i];

struct MenuItem mi_reset = {"Reset all", &reset_menu, NULL};
struct MenuItem mi_credits = {"Credits", NULL, &credits_action};
struct MenuItem *mia_main[] = {&mi_save, &mi_restore, &mi_del, &mi_settings, &mi_reset, &mi_credits};
struct Menu menu_main = {"Menu", ARRAY_LEN(mia_main), mia_main};


//----------------------------------------

}

//----------------------------------------
// Draw the menu on the screen.
//     menu  pointer to a Menu structure
// Only draws the top row.
//----------------------------------------

void menu_draw(struct Menu *menu)
