diff --git a/bootfiles/18e/boot12.lisp b/bootfiles/18e/boot12.lisp
index 70b14498e616b74d86debee8f365b4c0b320f472..3a663f6f703c11b7786f02e5ae4704242f4db116 100644
--- a/bootfiles/18e/boot12.lisp
+++ b/bootfiles/18e/boot12.lisp
@@ -9,12 +9,25 @@
 ;;;
 ;;; Move FDEFN-OR-LOSE to KERNEL and export it from there.
 ;;;
+
+(in-package :lisp)
+
+(unless (fboundp 'fdefn-or-lose)
+(defun fdefn-or-lose (name)
+  "Return the FDEFN of NAME.  Signal an error if there is none
+     or if it's function is null."
+       (let ((fdefn (fdefinition-object name nil)))
+           (unless (and fdefn (fdefn-function fdefn))
+	         (error 'undefined-function :name name))
+		     fdefn)))
+
+(in-package :user)
+
 (setf (fdefinition 'kernel::fdefn-or-lose)
       (fdefinition 'lisp::fdefn-or-lose))
 (unintern 'cl::fdefn-or-lose :cl)
 (export 'kernel::fdefn-or-lose :kernel)
 
-
 (in-package :profile)
 
 (defmacro defstruct! (name &rest stuff)