diff --git a/COPYING.txt b/COPYING.txt
index c226ac6..9a58114 100644
--- a/COPYING.txt
+++ b/COPYING.txt
@@ -2,7 +2,7 @@
 License for Berkeley SoftFloat Release 3
 
 John R. Hauser
-2015 Jan 9
+2015 February 16
 
 The following applies to the whole of SoftFloat Release 3 as well as to each
 source file individually.
diff --git a/README.html b/README.html
index 45fec86..9697cdc 100644
--- a/README.html
+++ b/README.html
@@ -11,7 +11,7 @@
 
 <P>
 John R. Hauser<BR>
-2015 Jan 9<BR>
+2015 February 16<BR>
 </P>
 
 <P>
diff --git a/README.txt b/README.txt
index 364bfbd..857e7c5 100644
--- a/README.txt
+++ b/README.txt
@@ -2,7 +2,7 @@
 Package Overview for Berkeley SoftFloat Release 3
 
 John R. Hauser
-2015 Jan 9
+2015 February 16
 
 Berkeley SoftFloat is a software implementation of binary floating-point
 that conforms to the IEEE Standard for Floating-Point Arithmetic.  SoftFloat
diff --git a/doc/SoftFloat-history.html b/doc/SoftFloat-history.html
index dcc11d3..a0ce556 100644
--- a/doc/SoftFloat-history.html
+++ b/doc/SoftFloat-history.html
@@ -11,11 +11,11 @@
 
 <P>
 John R. Hauser<BR>
-2015 January 31<BR>
+2015 February 16<BR>
 </P>
 
 
-<H3>Release 3 (2015 January)</H3>
+<H3>Release 3 (2015 February)</H3>
 
 <UL>
 
diff --git a/doc/SoftFloat-source.html b/doc/SoftFloat-source.html
index b0a96b0..87e6c1a 100644
--- a/doc/SoftFloat-source.html
+++ b/doc/SoftFloat-source.html
@@ -11,7 +11,7 @@
 
 <P>
 John R. Hauser<BR>
-2015 Jan 9<BR>
+2015 February 16<BR>
 </P>
 
 
diff --git a/doc/SoftFloat.html b/doc/SoftFloat.html
index 8e58a44..747046e 100644
--- a/doc/SoftFloat.html
+++ b/doc/SoftFloat.html
@@ -11,7 +11,7 @@
 
 <P>
 John R. Hauser<BR>
-2015 Jan 9<BR>
+2015 February 16<BR>
 </P>
 
 
diff --git a/source/extF80M_sqrt.c b/source/extF80M_sqrt.c
index b3c0426..bdd849f 100644
--- a/source/extF80M_sqrt.c
+++ b/source/extF80M_sqrt.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -135,7 +135,7 @@
     /*------------------------------------------------------------------------
     *------------------------------------------------------------------------*/
     if ( (q & 0xFFFFFF) <= 2 ) {
-        q &= ~0xFFFF;
+        q &= ~(uint32_t) 0xFFFF;
         extSigZ[indexWordLo( 3 )] = q<<7;
         x64 = sig64Z + (q>>27);
         term[indexWord( 4, 3 )] = 0;
diff --git a/source/extF80_sqrt.c b/source/extF80_sqrt.c
index f85e3e7..a73278b 100644
--- a/source/extF80_sqrt.c
+++ b/source/extF80_sqrt.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -127,7 +127,7 @@
     /*------------------------------------------------------------------------
     *------------------------------------------------------------------------*/
     if ( (q & 0xFFFFFF) <= 2 ) {
-        q &= ~0xFFFF;
+        q &= ~(uint_fast64_t) 0xFFFF;
         sigZExtra = (uint64_t) (q<<39);
         term = softfloat_mul64ByShifted32To128( x64 + (q>>27), q );
         x64 = (uint_fast64_t) (uint32_t) (q<<5) * (uint32_t) q;
diff --git a/source/s_mulAddF128M.c b/source/s_mulAddF128M.c
index 4fab817..3f74d43 100644
--- a/source/s_mulAddF128M.c
+++ b/source/s_mulAddF128M.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -241,7 +241,7 @@
             *----------------------------------------------------------------*/
             shiftCount = expDiff & 31;
             if ( shiftCount ) {
-                softfloat_shortShiftRight160M( sigX, expDiff, sigX );
+                softfloat_shortShiftRight160M( sigX, shiftCount, sigX );
             }
             expDiff >>= 5;
             extSigPtr =
diff --git a/source/s_roundPackMToExtF80M.c b/source/s_roundPackMToExtF80M.c
index b475bcb..f4edeee 100644
--- a/source/s_roundPackMToExtF80M.c
+++ b/source/s_roundPackMToExtF80M.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -171,7 +171,7 @@
                     | extSigPtr[indexWord( 3, 1 )];
             if ( doIncrement ) {
                 ++sig;
-                sig &= ~(! (sigExtra & 0x7FFFFFFF) & roundNearEven);
+                sig &= ~(uint64_t) (! (sigExtra & 0x7FFFFFFF) & roundNearEven);
                 exp = ((sig & UINT64_C( 0x8000000000000000 )) != 0);
             }
             goto packReturn;
@@ -211,7 +211,7 @@
             ++exp;
             sig = UINT64_C( 0x8000000000000000 );
         } else {
-            sig &= ~(! (sigExtra & 0x7FFFFFFF) & roundNearEven);
+            sig &= ~(uint64_t) (! (sigExtra & 0x7FFFFFFF) & roundNearEven);
         }
     }
     /*------------------------------------------------------------------------
diff --git a/source/s_roundPackToExtF80.c b/source/s_roundPackToExtF80.c
index 9e54d8e..4644149 100644
--- a/source/s_roundPackToExtF80.c
+++ b/source/s_roundPackToExtF80.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -156,8 +156,9 @@
             if ( doIncrement ) {
                 ++sig;
                 sig &=
-                    ~(! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
-                          & roundNearEven);
+                    ~(uint_fast64_t)
+                         (! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+                              & roundNearEven);
                 exp = ((sig & UINT64_C( 0x8000000000000000 )) != 0);
             }
             goto packReturn;
@@ -194,8 +195,9 @@
             sig = UINT64_C( 0x8000000000000000 );
         } else {
             sig &=
-                ~(! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
-                      & roundNearEven);
+                ~(uint_fast64_t)
+                     (! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+                          & roundNearEven);
         }
     } else {
         if ( ! sig ) exp = 0;
diff --git a/source/s_roundPackToF128.c b/source/s_roundPackToF128.c
index f30a51a..3f6395f 100644
--- a/source/s_roundPackToF128.c
+++ b/source/s_roundPackToF128.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -130,8 +130,9 @@
         sig64 = sig128.v64;
         sig0 =
             sig128.v0
-                & ~(! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
-                        & roundNearEven);
+                & ~(uint64_t)
+                       (! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+                            & roundNearEven);
     } else {
         if ( ! (sig64 | sig0) ) exp = 0;
     }
diff --git a/source/s_roundPackToF32.c b/source/s_roundPackToF32.c
index fbc3e44..3d5c8a0 100644
--- a/source/s_roundPackToF32.c
+++ b/source/s_roundPackToF32.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -80,7 +80,7 @@
     }
     if ( roundBits ) softfloat_exceptionFlags |= softfloat_flag_inexact;
     sig = (sig + roundIncrement)>>7;
-    sig &= ~(! (roundBits ^ 0x40) & roundNearEven);
+    sig &= ~(uint_fast32_t) (! (roundBits ^ 0x40) & roundNearEven);
     uiZ = packToF32UI( sign, sig ? exp : 0, sig );
  uiZ:
     uZ.ui = uiZ;
diff --git a/source/s_roundPackToF64.c b/source/s_roundPackToF64.c
index 9c4a2ba..e92e6ec 100644
--- a/source/s_roundPackToF64.c
+++ b/source/s_roundPackToF64.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -83,7 +83,7 @@
     }
     if ( roundBits ) softfloat_exceptionFlags |= softfloat_flag_inexact;
     sig = (sig + roundIncrement)>>10;
-    sig &= ~(! (roundBits ^ 0x200) & roundNearEven);
+    sig &= ~(uint_fast64_t) (! (roundBits ^ 0x200) & roundNearEven);
     uiZ = packToF64UI( sign, sig ? exp : 0, sig );
  uiZ:
     uZ.ui = uiZ;
diff --git a/source/s_roundPackToI32.c b/source/s_roundPackToI32.c
index e07dd00..24bf689 100644
--- a/source/s_roundPackToI32.c
+++ b/source/s_roundPackToI32.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -60,7 +60,7 @@
     sig += roundIncrement;
     if ( sig & UINT64_C( 0xFFFFFF8000000000 ) ) goto invalid;
     sig32 = sig>>7;
-    sig32 &= ~(! (roundBits ^ 0x40) & roundNearEven);
+    sig32 &= ~(uint_fast32_t) (! (roundBits ^ 0x40) & roundNearEven);
     uZ.ui = sign ? -sig32 : sig32;
     z = uZ.i;
     if ( z && ((z < 0) ^ sign) ) goto invalid;
diff --git a/source/s_roundPackToI64.c b/source/s_roundPackToI64.c
index dca0778..e0e24af 100644
--- a/source/s_roundPackToI64.c
+++ b/source/s_roundPackToI64.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -62,7 +62,9 @@
         ++sig;
         if ( ! sig ) goto invalid;
         sig &=
-            ~(! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF )) & roundNearEven);
+            ~(uint_fast64_t)
+                 (! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+                      & roundNearEven);
     }
     uZ.ui = sign ? -sig : sig;
     z = uZ.i;
diff --git a/source/s_roundPackToUI32.c b/source/s_roundPackToUI32.c
index ca45426..79a34b2 100644
--- a/source/s_roundPackToUI32.c
+++ b/source/s_roundPackToUI32.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -58,7 +58,7 @@
     sig += roundIncrement;
     if ( sig & UINT64_C( 0xFFFFFF8000000000 ) ) goto invalid;
     z = sig>>7;
-    z &= ~(! (roundBits ^ 0x40) & roundNearEven);
+    z &= ~(uint_fast32_t) (! (roundBits ^ 0x40) & roundNearEven);
     if ( sign && z ) goto invalid;
     if ( exact && roundBits ) {
         softfloat_exceptionFlags |= softfloat_flag_inexact;
diff --git a/source/s_roundPackToUI64.c b/source/s_roundPackToUI64.c
index 4c1e800..7ef5a78 100644
--- a/source/s_roundPackToUI64.c
+++ b/source/s_roundPackToUI64.c
@@ -4,10 +4,10 @@
 This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic
 Package, Release 3, by John R. Hauser.
 
-Copyright 2011, 2012, 2013, 2014 The Regents of the University of California
-(Regents).  All Rights Reserved.  Redistribution and use in source and binary
-forms, with or without modification, are permitted provided that the following
-conditions are met:
+Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of
+California (Regents).  All Rights Reserved.  Redistribution and use in source
+and binary forms, with or without modification, are permitted provided that
+the following conditions are met:
 
 Redistributions of source code must retain the above copyright notice,
 this list of conditions, and the following two paragraphs of disclaimer.
@@ -60,7 +60,9 @@
         ++sig;
         if ( ! sig ) goto invalid;
         sig &=
-            ~(! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF )) & roundNearEven);
+            ~(uint_fast64_t)
+                 (! (sigExtra & UINT64_C( 0x7FFFFFFFFFFFFFFF ))
+                      & roundNearEven);
     }
     if ( sign && sig ) goto invalid;
     if ( exact && sigExtra ) {
