diff --git a/entity.test b/entity.test
index 03c2551..8286653 100644
--- a/entity.test
+++ b/entity.test
@@ -1468,6 +1468,8 @@ class EntityMetadataIntegrationTestCase extends EntityWebTestCase {
     $node3 = $this->drupalCreateNode(array('type' => 'page'));
 
     // Test whether the properties work.
+    $wrapper = entity_metadata_wrapper('node', $node);
+    $this->assertEmptyArray($wrapper, 'book_ancestors');
     $wrapper = entity_metadata_wrapper('node', $node2);
     $this->assertEqual($title, $wrapper->book->title->value(), "Book title returned.");
     $this->assertEqual(array($node->nid), $wrapper->book_ancestors->value(array('identifier' => TRUE)), "Book ancestors returned.");
diff --git a/modules/callbacks.inc b/modules/callbacks.inc
index 26f802e..7db7820 100644
--- a/modules/callbacks.inc
+++ b/modules/callbacks.inc
@@ -29,7 +29,7 @@ function entity_metadata_book_get_properties($node, array $options, $name, $enti
 
     case 'book_ancestors':
       $ancestors = array();
-      while (!empty($node->book['plid'])) {
+      while (!empty($node->book['plid']) && $node->book['plid'] != -1) {
         $link = book_link_load($node->book['plid']);
         array_unshift($ancestors, $link['nid']);
         $node = node_load($link['nid']);
