diff --git a/src/bp_tree.rs b/src/bp_tree.rs
index d68eabfddb0da157371b892bc03c7216aabb3a81..39c44e684ccfbf89982f11e8d1de0162da1e41db 100644
--- a/src/bp_tree.rs
+++ b/src/bp_tree.rs
@@ -79,7 +79,7 @@ impl<L: PartialEq + Clone + Debug> SuccinctTree<BPTree<L>, L> for BPTree<L> {
         if index == 0 {
             Err(NodeError::HasNoParentError)
         } else {
-            Ok(self.minmax.enclose(index)?)
+            Ok(self.minmax.enclose(index)? as u64)
         }
     }
 
@@ -362,7 +362,6 @@ mod tests {
     }
 
     #[test]
-    #[ignore]
     fn parent() {
         let bitvec = bit_vec!(true, true, false, false);
         let tree: BPTree<String> = BPTree::from_bitvec(bitvec.clone()).unwrap();
diff --git a/src/common/min_max.rs b/src/common/min_max.rs
index fad2a5cc5530ccf2dc67998925810e9429661638..9ff3b79f2ec51e7627bd9efccd178a63ba2b7d2e 100644
--- a/src/common/min_max.rs
+++ b/src/common/min_max.rs
@@ -312,7 +312,7 @@ impl MinMax {
         Ok(position_in_block)
     }
 
-    fn bwd_search(&self, index: u64, diff: i64) -> Result<u64, NodeError> {
+    fn bwd_search(&self, index: u64, diff: i64) -> Result<i64, NodeError> {
         let mut block_no = index / self.block_size;
         let mut begin_of_block = block_no * self.block_size;
         let mut end_of_block = begin_of_block + self.block_size - 1;
@@ -419,10 +419,10 @@ impl MinMax {
             }
         }
         if found {
-            Ok(position)
+            Ok(position as i64)
         } else {
             //todo konnte nicht gefunden werden!!
-            Ok(10000000)
+            Ok(-1)
         }
     }
 
@@ -430,8 +430,8 @@ impl MinMax {
         self.fwd_search(index, 0)
     }
 
-    pub fn enclose(&self, index: u64) -> Result<u64, NodeError> {
-        self.bwd_search(index, 1)
+    pub fn enclose(&self, index: u64) -> Result<i64, NodeError> {
+        Ok(self.bwd_search(index, 2)? + 1)
     }
 
     pub fn rank_1(&self, index: u64) -> Result<u64, NodeError> {