diff -ruN klic-3.003-2002-02-18/runtime/faisus.c klic-3.003-2002-02-18a/runtime/faisus.c
--- klic-3.003-2002-02-18/runtime/faisus.c	Sun Feb 17 15:12:05 2002
+++ klic-3.003-2002-02-18a/runtime/faisus.c	Mon Feb 18 15:19:42 2002
@@ -30,7 +30,7 @@
 extern int stepping_flag;
 
 extern void record_suspended_pred();
-extern q* step_susp();
+extern void step_susp();
 #endif /* DEBUGLIB */
 
 
@@ -218,8 +218,8 @@
 #ifdef DEBUGLIB
     if (reasonp > reasons) {
       if (stepping_flag) {
-	allocp = step_susp(allocp, goal, reasonp, 0);
 	set_heapp(allocp);
+	step_susp(goal, reasonp, 0);
 	return;
       } else if (trace_flag) {
 	goal = trace_susp(goal, reasonp, 0);
diff -ruN klic-3.003-2002-02-18/runtime/step.c klic-3.003-2002-02-18a/runtime/step.c
--- klic-3.003-2002-02-18/runtime/step.c	Sat Feb 16 12:05:35 2002
+++ klic-3.003-2002-02-18a/runtime/step.c	Mon Feb 18 15:17:52 2002
@@ -16,6 +16,8 @@
 #include "funct.h"
 #include "step.h"  /* stepping_flag */
 
+extern q* do_unify_value();
+
 /* Global flag for stepping */
 int stepping_flag = 0;
 
@@ -98,17 +100,17 @@
   return (*stepped_pred->func)(glbl, goal, allocp, stepped_pred);
 }
 
-static q *step_unify_results(allocp, children, wokenup, failure, susp)
-     q *allocp;
+static void
+step_unify_results(children, wokenup, failure, susp)
      q children, wokenup, failure, susp;
 {
   struct goalrec *trigger = step_trigger_goal;
-  extern q *do_unify_value();
+  q* allocp = heapp();
   allocp = do_unify_value(allocp, trigger->args[1], children);
   allocp = do_unify_value(allocp, trigger->args[2], wokenup);
   allocp = do_unify_value(allocp, trigger->args[3], failure);
   allocp = do_unify_value(allocp, trigger->args[4], susp);
-  return allocp;
+  set_heapp(allocp);
 }
 
 extern struct goalrec*
@@ -226,17 +228,17 @@
     }
 
     /*** Finally, Unify the Results ***/
-    allocp =
-      step_unify_results(allocp, children, wokenup, failed, NILATOM);
+    set_heapp(allocp);
+    step_unify_results(children, wokenup, failed, NILATOM);
+    allocp = heapp();
   }
   set_heapp(allocp);
   stepping_flag = 0;
   return qp;
 }
 
-extern q*
-step_susp(allocp, goal, reasonp, spontaneous)
-     q *allocp;
+extern void
+step_susp(goal, reasonp, spontaneous)
      struct goalrec *goal;
      q *reasonp;
      int spontaneous;
@@ -244,6 +246,7 @@
   declare_globals;
   q reason_list;
   q children;
+  q* allocp = heapp();
 
   allocp[0] = NILATOM;
   allocp[1] = step_trigger_goal->args[0];
@@ -258,8 +261,8 @@
     allocp += 2;
   }
   step_suspended = 1;
-  allocp = step_unify_results(allocp, children, NILATOM, NILATOM, reason_list);
-  return allocp;
+  set_heapp(allocp);
+  step_unify_results(children, NILATOM, NILATOM, reason_list);
 }
 
 extern void
diff -ruN klic-3.003-2002-02-18/runtime/step.h klic-3.003-2002-02-18a/runtime/step.h
--- klic-3.003-2002-02-18/runtime/step.h	Tue Jan  1 17:09:10 2002
+++ klic-3.003-2002-02-18a/runtime/step.h	Mon Feb 18 15:18:15 2002
@@ -12,7 +12,7 @@
 extern int stepping_flag;
 
 extern struct goalrec* step_after(struct goalrec* qp, q* allocp);
-extern q* step_susp(q* allocp, struct goalrec* goal, q* reasonp, int spontaneous);
+extern void step_susp(struct goalrec* goal, q* reasonp, int spontaneous);
 extern void step_wokenup(struct goalrec* goal, long prio);
 extern void step_failure(struct goalrec* goal);
 
