Index: wp-admin/includes/plugin.php
===================================================================
--- wp-admin/includes/plugin.php	(revision 17575)
+++ wp-admin/includes/plugin.php	(working copy)
@@ -888,7 +888,7 @@
 	if ( null === $position  )
 		$menu[] = $new_menu;
 	else
-		$menu[$position] = $new_menu;
+		$position = $menu[get_unique_menu_key( $position )] = $new_menu;
 
 	$_registered_pages[$hookname] = true;
 
@@ -1483,6 +1483,24 @@
 	return $title;
 }
 
+/**
+ * Preserves core menu keys as well as keys previously set by various APIs 
+ *
+ * If requested key has already been set or will be set by core, bump it util we find a free one
+ *
+ * @param int $int The position in the menu order this one should appear
+ * @return int
+ */
+function get_unique_menu_key( $int ) {
+	global $menu;
+	
+	$core_menu_positions = array( 2, 4, 5, 10, 15, 20, 25, 59, 60, 65, 70, 75, 80, 99);
+	while ( isset($menu[$int] ) || in_array( $int, $core_menu_positions ) )
+		$int++;
+			
+	return $int;
+}
+
 function get_plugin_page_hook( $plugin_page, $parent_page ) {
 	$hook = get_plugin_page_hookname( $plugin_page, $parent_page );
 	if ( has_action($hook) )
Index: wp-admin/menu.php
===================================================================
--- wp-admin/menu.php	(revision 17575)
+++ wp-admin/menu.php	(working copy)
@@ -122,10 +122,7 @@
 		$ptype_class = 'post';
 	}
 
-	// if $ptype_menu_position is already populated or will be populated by a hard-coded value below, increment the position.
-	$core_menu_positions = array(59, 60, 65, 70, 75, 80, 85, 99);
-	while ( isset($menu[$ptype_menu_position]) || in_array($ptype_menu_position, $core_menu_positions) )
-		$ptype_menu_position++;
+	$ptype_menu_position = get_unique_menu_key( $ptype_menu_position );
 
 	$menu[$ptype_menu_position] = array( esc_attr( $ptype_obj->labels->menu_name ), $ptype_obj->cap->edit_posts, "edit.php?post_type=$ptype", '', 'menu-top menu-icon-' . $ptype_class, 'menu-posts-' . $ptype_for_id, $menu_icon );
 	$submenu["edit.php?post_type=$ptype"][5]  = array( $ptype_obj->labels->menu_name, $ptype_obj->cap->edit_posts,  "edit.php?post_type=$ptype");
