       {
         case vfo_RLeft:
           Serial.println("Menu: vfo_RLeft");
-          --item_index;
-          if (item_index < 0)
-            item_index = 0;
+          if (menu->num_items == 1)
+          {
+            // special dynamic menuitem
+            Serial.print("special dynamic menuitem, before item_num="); Serial.println(item_num);
+            Serial.print("menu->items[item_num]->incdec=");
+            Serial.println((unsigned long) menu->items[item_num]->incdec);
+            item_num = menu->items[item_num]->incdec(item_num, -1);
+            Serial.print("after item_num="); Serial.println(item_num);
+          }
+          else
+          {
+            // normal menuitem
+            if (--item_num < 0)
+              item_num = 0;
+          }
           break;
         case vfo_RRight:
-          Serial.print("Menu: vfo_RRight, menu->num_items="); Serial.println(menu->num_items);
-          ++item_index;
-          if (item_index >= menu->num_items)
-            item_index = menu->num_items - 1;
-          Serial.print("Menu: vfo_RRight, new item_index="); Serial.println(item_index);
+          Serial.print("Menu: vfo_RRight, menu=");
+          Serial.print((unsigned long) menu);
+          Serial.print(", menu->num_items=");
+          Serial.print(menu->num_items);
+          Serial.print(", menu->items[item_num]->incdec=");
+          Serial.println((unsigned long) menu->items[item_num]->incdec);
+          if (menu->num_items == 1)
+          {
+            // special dynamic menuitem
+            Serial.print("special dynamic menuitem, before item_num=");
+            Serial.print(item_num);
+            Serial.print(", menu->items[item_num]->incdec=");
+            Serial.println((unsigned long) menu->items[item_num]->incdec);
+            
+            item_num = menu->items[item_num]->incdec(item_num, +1);
+            
+            Serial.print("AFTER menu->items[item_num]->incdec=");
+            Serial.print((unsigned long) menu->items[item_num]->incdec);
+            Serial.print(", item_num=");
+            Serial.println(item_num);
+          }
+          else
+          {
+            // normal menuitem
+            if (++item_num >= menu->num_items)
+              item_num = menu->num_items - 1;
+          }
+          Serial.print("Menu: AFTER vfo_RRight, menu=");
+          Serial.print((unsigned long) menu);
+          Serial.print(", menu->num_items=");
+          Serial.print(menu->num_items);
+          Serial.print(", menu->items[item_num]->incdec=");
+          Serial.println((unsigned long) menu->items[item_num]->incdec);
+          Serial.print("Menu: vfo_RRight, new item_num="); Serial.println(item_num);
           break;
         case vfo_DnRLeft:
           Serial.println("Menu: vfo_DnRLeft");

#include <EEPROM.h>


//#define RESET   // define if resetting all EEPROM data
//#define DEBUG   // define if debugging


// Digital VFO program name & version

  re_setup(VfoSelectDigit);

  // show program name and version number
#ifndef DEBUG
  banner();
  if (pop_event() == vfo_HoldClick)
  {
