--- /dev/null
+diff --git a/libaudiofile/modules/SimpleModule.h b/libaudiofile/modules/SimpleModule.h
+index 03c6c69..bad85ad 100644
+--- a/libaudiofile/modules/SimpleModule.h
++++ b/libaudiofile/modules/SimpleModule.h
+@@ -123,7 +123,8 @@ struct signConverter
+ typedef typename IntTypes<Format>::UnsignedType UnsignedType;
+
+ static const int kScaleBits = (Format + 1) * CHAR_BIT - 1;
+- static const int kMinSignedValue = -1 << kScaleBits;
++ static const int kMaxSignedValue = (((1 << (kScaleBits - 1)) - 1) << 1) + 1;
++ static const int kMinSignedValue = -kMaxSignedValue - 1;
+
+ struct signedToUnsigned : public std::unary_function<SignedType, UnsignedType>
+ {