diff --git a/fib.lisp b/fib.lisp
index e69de29..8afb72d 100644
--- a/fib.lisp
+++ b/fib.lisp
@@ -0,0 +1,20 @@
+(defun my-fib-do-impl (n)
+  (do ((counter 0 (1+ counter))
+       (cur 0 next)
+       (next 1 (+ cur next)))
+      ((= counter n) cur)))
+
+
+(defun my-fib-recu-impl (n)
+  (cond ((= 0 n) 0)
+        ((= 1 n) 1)
+        (t (+ (my-fib-recu-impl (- n 1))
+              (my-fib-recu-impl (- n 2))))))
+
+
+(defun my-fib-iter-impl (n)
+  (defun my-fib-iter (a b counter)
+    (if (= counter n)
+        a
+        (my-fib-iter b (+ a b) (1+ counter))))
+  (my-fib-iter 0 1 0))
diff --git a/packages.lisp b/packages.lisp
index 601d45b..4470d36 100644
--- a/packages.lisp
+++ b/packages.lisp
@@ -11,4 +11,7 @@
            my-sqrt
            my-factorial-recu-impl
            my-factorial-iter-impl
-           my-factorial-do-impl))
+           my-factorial-do-impl
+           my-fib-do-impl
+           my-fib-recu-impl
+           my-fib-iter-impl))