diff --git a/apachesolr.index.inc b/apachesolr.index.inc
index cee8296..cdfecc6 100644
--- a/apachesolr.index.inc
+++ b/apachesolr.index.inc
@@ -752,10 +752,16 @@ function apachesolr_index_node_solr_reindex($env_id) {
 /**
  * Status callback for ApacheSolr, for nodes.
  */
-function apachesolr_index_node_status_callback($entity_id, $entity_type) {
+function apachesolr_index_node_status_callback($entity_id, $entity_type, $entity = NULL) {
+  if (isset($entity) && isset($entity->status)) {
+    $node = $entity;
+  }
+  else {
+    $node = node_load($entity_id, NULL, TRUE);
+  }
+
   // Make sure we have a boolean value.
   // Anything different from 1 becomes zero
-  $node = node_load($entity_id, NULL, TRUE);
   $status = ($node->status == 1 ? 1 : 0);
   return $status;
 }
diff --git a/apachesolr.module b/apachesolr.module
index 2e077e2..263df39 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -1767,7 +1767,7 @@ function apachesolr_entity_update($entity, $type) {
       if (is_callable($status_callback)) {
         // by placing $status in front we prevent calling any other callback
         // after one status callback returned false
-        $status = $status && $status_callback($id, $type);
+        $status = $status && $status_callback($id, $type, $entity);
       }
     }
 
