diff --git a/indra/llcommon/is_approx_equal_fraction.h b/indra/llcommon/is_approx_equal_fraction.h
index 4a9b2e2725f58bfc69b65cc1a01d702855a926d9..6a567c78cb2fa7c9e582bdeae15ccf0e0ebe0d66 100644
--- a/indra/llcommon/is_approx_equal_fraction.h
+++ b/indra/llcommon/is_approx_equal_fraction.h
@@ -49,7 +49,7 @@ inline BOOL is_approx_equal_fraction_impl(FTYPE x, FTYPE y, U32 frac_bits)
     FTYPE diff = (FTYPE) fabs(x - y);
 
     S32 diffInt = (S32) diff;
-    S32 diffFracTolerance = (S32) ((diff - (FTYPE) diffInt) * (1 << frac_bits));
+    S32 diffFracTolerance = (S32) ((diff - (FTYPE) diffInt) * (1U << frac_bits));
 
     // if integer portion is not equal, not enough bits were used for packing
     // so error out since either the use case is not correct OR there is
diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp
index 14fb7cc64a77fc32867a892ac00bac1d4aaff3c6..d5b657d7ce15cbfe4c16e6ce3e1badd0d61238eb 100644
--- a/indra/llcommon/llsd.cpp
+++ b/indra/llcommon/llsd.cpp
@@ -456,8 +456,8 @@ namespace
 	
 	const LLSD& ImplMap::ref(const LLSD::String& k) const
 	{
-		DataMap::const_iterator i = mData.lower_bound(k);
-		if (i == mData.end()  ||  mData.key_comp()(k, i->first))
+		DataMap::const_iterator i = mData.find(k);
+		if (i == mData.end())
 		{
 			return undef();
 		}