diff --git a/lib/modules/ADT.pmod/Heap.pike b/lib/modules/ADT.pmod/Heap.pike
index 6292860975eae2863458345bd583c84ab670ffd2..cef3715cf871d5d6d7bdf54980fde2bbb6427f39 100644
--- a/lib/modules/ADT.pmod/Heap.pike
+++ b/lib/modules/ADT.pmod/Heap.pike
@@ -128,7 +128,7 @@ Element adjust(mixed value)
   if (objectp(value) && value->is_adt_heap_element) {
     pos = value->pos;
   } else {
-    pos = search(values?->value, value);
+    pos = search(map(values, lambda(Element x) { return x?->value; }), value);
   }
   Element ret;
   if(pos>=0) {
@@ -211,7 +211,7 @@ void remove(mixed value)
   if (objectp(value) && value->is_adt_heap_element) {
     pos = value->pos;
   } else {
-    pos = search(values?->value, value);
+    pos = search(map(values, lambda(Element x) { return x?->value; }), value);
   }
   if ((pos < 0) || (pos >= num_values)) return;