Index: softfloat/generic/conversion.c
===================================================================
--- softfloat/generic/conversion.c	(revision feef1cd3702ab8f3d1f357fb02cfdceb1a73b3e3)
+++ softfloat/generic/conversion.c	(revision 350514cb8dd5c0fa5256bae2ae04520fef3f1568)
@@ -60,4 +60,6 @@
 			--result.parts.exp;
 		};
+		
+		++result.parts.exp;
 		result.parts.mantisa = mant;
 	};
@@ -109,5 +111,4 @@
 		
 		exp *= -1;	
-		
 		if (exp > FLOAT32_MANTISA_SIZE ) {
 			/* FIXME: underflow */
@@ -118,6 +119,8 @@
 		/* denormalized */
 		
-		mant = result.parts.mantisa >> 1; 
+		mant = a.parts.mantisa; 
 		mant |= 0x10000000000000ll; /* denormalize and set hidden bit */
+		
+		mant >>= (FLOAT64_MANTISA_SIZE - FLOAT32_MANTISA_SIZE + 1);
 		
 		while (exp > 0) {
