diff -ruN klic-3.003-2002-02-16/include/klic/alloc.h klic-3.003-2002-02-17/include/klic/alloc.h
--- klic-3.003-2002-02-16/include/klic/alloc.h	Mon Jan 21 20:55:25 2002
+++ klic-3.003-2002-02-17/include/klic/alloc.h	Sun Feb 17 13:11:49 2002
@@ -31,7 +31,7 @@
 
 
 /* runtime/intrpt.c */
-extern q* klic_interrupt(q* allocp, struct goalrec* qp);
+extern void klic_interrupt(struct goalrec* qp);
 
 /* runtime/alloc.c */
 extern void* malloc_check(unsigned long size);
diff -ruN klic-3.003-2002-02-16/include/klic/control.h klic-3.003-2002-02-17/include/klic/control.h
--- klic-3.003-2002-02-16/include/klic/control.h	Sat Feb 16 11:44:06 2002
+++ klic-3.003-2002-02-17/include/klic/control.h	Sun Feb 17 13:13:02 2002
@@ -91,7 +91,9 @@
   module (*func)(); \
   _INC_REDUCTION_COUNT(REDUCTION_COUNTS); \
   if (allocp >= heaplimit) { \
-    allocp = klic_interrupt(allocp, qp); \
+    set_heapp(allocp); \
+    klic_interrupt(qp); \
+    allocp = heapp(); \
     qp = current_queue; \
   } \
   toppred = qp->pred; \
diff -ruN klic-3.003-2002-02-16/runtime/intrpt.c klic-3.003-2002-02-17/runtime/intrpt.c
--- klic-3.003-2002-02-16/runtime/intrpt.c	Sat Feb 16 11:58:49 2002
+++ klic-3.003-2002-02-17/runtime/intrpt.c	Sun Feb 17 13:16:38 2002
@@ -59,13 +59,13 @@
   return qp;
 }
 
-extern q*
-klic_interrupt(allocp, qp)
-  q* allocp;
+extern void
+klic_interrupt(qp)
   struct goalrec* qp;
 {
   declare_globals;
   long retry;
+  q* allocp = heapp();
 
   qp = enqueue_resumed_goals(qp);
 
@@ -145,5 +145,5 @@
   }while( retry );
 
   current_queue = qp;
-  return allocp;
+  set_heapp(allocp);
 }
diff -ruN klic-3.003-2002-02-16/runtime/kmain.c klic-3.003-2002-02-17/runtime/kmain.c
--- klic-3.003-2002-02-16/runtime/kmain.c	Sat Feb 16 12:00:47 2002
+++ klic-3.003-2002-02-17/runtime/kmain.c	Sun Feb 17 13:18:36 2002
@@ -500,7 +500,8 @@
   allocp += 2;
 
   IDLE_OFF();
-  set_heapp(klic_interrupt(allocp, qp));
+  set_heapp(allocp);
+  klic_interrupt(qp);
   qp = current_queue;
 
   if ((qp->pred == &topsucceed_pred) && (heapp() == allocp)) {
@@ -572,7 +573,9 @@
     if (dl_det_interval != 0)
 #endif
       allocp = real_heaplimit;
-  allocp = klic_interrupt(allocp, qp);
+  set_heapp(allocp);
+  klic_interrupt(qp);
+  allocp = heapp();
   qp = current_queue;
 
   if (qp->pred == &topsucceed_pred) {
@@ -591,7 +594,8 @@
 
   }
   /* check resumpsions */
-  set_heapp(klic_interrupt(allocp, qp));
+  set_heapp(allocp);
+  klic_interrupt(qp);
   return (module) current_queue->pred->func;
 #else /*!USESIG*/
   fatalf("%d perpetually suspending goals found",
diff -ruN klic-3.003-2002-02-16/runtime/sched.c klic-3.003-2002-02-17/runtime/sched.c
--- klic-3.003-2002-02-16/runtime/sched.c	Sat Feb 16 12:03:34 2002
+++ klic-3.003-2002-02-17/runtime/sched.c	Sun Feb 17 13:19:20 2002
@@ -513,7 +513,8 @@
 
  WLoop:
   if( !(ex_qp->next) ){
-    set_heapp(klic_interrupt(allocp, qp));
+    set_heapp(allocp);
+    klic_interrupt(qp);
     if( current_queue != qp ){
       *cur_status = 1;
       qp = current_queue;
@@ -594,7 +595,8 @@
   const struct predicate* toppred;
 {
   while( !(ex_qp->next) ){
-    set_heapp(klic_interrupt(allocp, qp));
+    set_heapp(allocp);
+    klic_interrupt(qp);
     if( current_queue != qp ){
       *cur_status = 1;
       qp = current_queue;
