Index: admin_menu.js
===================================================================
--- admin_menu.js	(revision 379)
+++ admin_menu.js	(working copy)
@@ -40,11 +40,21 @@
     $('> ul', this).css({left: 'auto', display: 'block'})
       // Immediately hide nephew lists.
       .parent().siblings('li').children('ul').css({left: '-999em', display: 'none'});
+    // Unfix the menu if it's fixed.
+    if (Drupal.settings.admin_menu.position_fixed) {
+      $('#admin-menu').css('top', $('#admin-menu').offset().top + 'px');
+      $('#admin-menu').css('position', 'absolute');
+    }
   }, function() {
     // Start the timer.
     var uls = $('> ul', this);
     this.sfTimer = setTimeout(function() {
       uls.css({left: '-999em', display: 'none'});
+      // Fix the menu back if it's supposed to be.
+      if (Drupal.settings.admin_menu.position_fixed && $('#admin-menu > ul > li > ul:not(:hidden)').length == 0) {
+        $('#admin-menu').css('position', 'fixed');
+        $('#admin-menu').css('top', '0px');
+      }
     }, 400);
   });
 });
