diff -ru rt-3.4.0/lib/RT/Tickets_Overlay.pm rt-3.4.0-p/lib/RT/Tickets_Overlay.pm
--- rt-3.4.0/lib/RT/Tickets_Overlay.pm	2005-02-01 17:20:40.000000000 +0300
+++ rt-3.4.0-p/lib/RT/Tickets_Overlay.pm	2005-09-25 13:48:26.000000000 +0400
@@ -73,6 +73,10 @@
 =begin testing
 
 ok (require RT::Tickets);
+ok( my $testtickets = RT::Tickets->new( $RT::SystemUser ) );
+ok( $testtickets->LimitStatus( VALUE => 'deleted' ) );
+# Should be zero until 'allow_deleted_search'
+ok( $testtickets->Count == 0 );
 
 =end testing
 
@@ -1344,6 +1348,11 @@
 OPERATOR is one of = or !=.
 VALUE is a status.
 
+RT adds Status != 'deleted' until object has
+allow_deleted_search internal property set.
+$tickets->{'allow_deleted_search'} = 1;
+$tickets->LimitStatus( VALUE => 'deleted' );
+
 =cut
 
 sub LimitStatus {
@@ -2263,7 +2272,8 @@
         #TODO we should be doing this in the where clause.
         #but you can't do multiple clauses on the same field just yet :/
 
-        if ( $Ticket->__Value('Status') eq 'deleted' ) {
+        if ( $Ticket->__Value('Status') eq 'deleted' &&
+	            !$self->{'allow_deleted_search'} ) {
             return ( $self->Next() );
         }
 
diff -ru rt-3.4.0/lib/RT/Tickets_Overlay_SQL.pm rt-3.4.0-p/lib/RT/Tickets_Overlay_SQL.pm
--- rt-3.4.0/lib/RT/Tickets_Overlay_SQL.pm	2005-02-01 17:20:40.000000000 +0300
+++ rt-3.4.0-p/lib/RT/Tickets_Overlay_SQL.pm	2005-09-25 13:40:27.000000000 +0400
@@ -508,8 +508,12 @@
     $self->SUPER::Limit( FIELD => 'Type', OPERATOR => '=', VALUE => 'ticket');
   }
 
-  # We never ever want to show deleted tickets
-  $self->SUPER::Limit(FIELD => 'Status' , OPERATOR => '!=', VALUE => 'deleted');
+  # We don't want deleted tickets unless 'allow_deleted_search' is set
+  unless( $self->{'allow_deleted_search'} ) {
+    $self->SUPER::Limit(FIELD => 'Status',
+                        OPERATOR => '!=',
+                        VALUE => 'deleted');
+  }
 
 
   # set SB's dirty flag
