const unsigned reg_s8_button_mult = 0x400;
 
     // Maximum number of PGCs in a domain that can be linked to.
-    // dvdauthor uses some menu numbers for special purposes,
-    // resulting in a practical limit of 119 per domain.
-    const unsigned domain_pgcs_max = 119;
+    const unsigned domain_pgcs_max = 127;
 
     // Maximum number of titles on a disc.  (Also the maximum number of
     // titlesets per disc.)
 
        oss << "exceeded DVD limit: " << limit_type << " > " << limit;
        throw std::length_error(oss.str());
     }
+
+    // dvdauthor uses some menu numbers to represent entry points -
+    // distinct from the actual numbers of the menus assigned as those
+    // entry points - resulting in a practical limit of 119 per
+    // domain.  This seems to be an oddity of the parser that could be
+    // fixed, but for now we'll have to work with it.
+    const unsigned dvdauthor_anonymous_menus_max = dvd::domain_pgcs_max - 8;
 }
 
 dvd_generator::dvd_generator(const video::frame_params & frame_params,
 {
     pgc_ref next_menu(menu_pgc, menus_.size());
 
-    if (next_menu.index == dvd::domain_pgcs_max)
-       throw_length_error("number of menus", dvd::domain_pgcs_max);
+    if (next_menu.index == dvdauthor_anonymous_menus_max)
+       throw_length_error("number of menus", dvdauthor_anonymous_menus_max);
 
     menus_.resize(next_menu.index + 1);
     return next_menu;