diff --git a/src/compiler/float-tran.lisp b/src/compiler/float-tran.lisp
index fcc0abbaab508a84c983b01fb588bad35296c778..9ce1ab251f05da22c047e76498c13ac2a8514d9d 100644
--- a/src/compiler/float-tran.lisp
+++ b/src/compiler/float-tran.lisp
@@ -76,7 +76,7 @@
 		  '(%double-double-float n))
 		 ((csubtypep tspec (specifier-type 'double-float))	
 		  '(%double-float n))	
-		 ((csubtypep tspec (specifier-type 'float))
+		 ((csubtypep tspec (specifier-type 'single-float))
 		  '(%single-float n))
 		 #+double-double
 		 ((csubtypep tspec (specifier-type '(complex double-double-float)))
diff --git a/tests/issues.lisp b/tests/issues.lisp
index 1640906b3fe26ce087be24e1afdf5e82b92538e6..4f7f5ed7d35a6016bc8e0e4f4e2e1b8e8db42f4c 100644
--- a/tests/issues.lisp
+++ b/tests/issues.lisp
@@ -200,3 +200,13 @@
 	      tests))
 	   `(progn ,@(nreverse tests)))))
     (make-tests)))
+
+(define-test issue.22
+    (:tag :issues)
+  (let ((tester (compile nil '(lambda (x)
+			       (coerce x 'float)))))
+    (assert-eql 1.0 (funcall tester 1))
+    (assert-eql 2f0 (funcall tester 2f0))
+    (assert-eql 3d0 (funcall tester 3d0))
+    (assert-eql 4w0 (funcall tester 4w0))))
+