diff -urbNP old/blocks404.active.inc new/blocks404.active.inc
--- old/blocks404.active.inc	2009-06-29 23:14:09.000000000 +0400
+++ new/blocks404.active.inc	2010-01-25 14:43:41.000000000 +0300
@@ -9,6 +9,9 @@
   $vars['left']  = theme('blocks', 'left')  . $vars['left'];
   $vars['right'] = theme('blocks', 'right') . $vars['right'];
 
+  $vars['sidebar_first']  = theme('blocks', 'sidebar_first', true);
+  $vars['sidebar_second'] = theme('blocks', 'sidebar_second', true);
+
   // Add JS/CSS added by blocks.
   $vars['scripts'] = drupal_get_js();
   $vars['styles'] = drupal_get_css();
@@ -33,6 +36,13 @@
     $layout = ($layout == 'left') ? 'both' : 'right';
   }
 
+  if (!empty($vars['sidebar_first'])) {
+    $layout = 'first';
+  }
+  if (!empty($vars['sidebar_second'])) {
+    $layout = ($layout == 'first') ? 'both' : 'second';
+  }
+
   // If the new layout is different than the old layout, reset the body classes.
   if ($layout != $vars['layout']) {
     // Some themes (like Zen) store body classes in an array.
