diff --git a/src/interpreter.h b/src/interpreter.h
index 591fd2caefde3180274f9dd1fda592c5e01e5125..156f287a1b783a09674b639a777d664784b3e528 100644
--- a/src/interpreter.h
+++ b/src/interpreter.h
@@ -983,7 +983,12 @@ static int eval_instruction(unsigned char *pc)
 
       CASE(F_RETURN_LOCAL);
       instr=GET_ARG();
-      pop_n_elems(sp-1 - (fp->locals+instr));
+      if(fp->expendible <= fp->locals+instr)
+      {
+	pop_n_elems(sp-1 - (fp->locals+instr));
+      }else{
+	push_svalue(fp->locals+instr);
+      }
       print_return_value();
       goto do_return;