diff --git a/pint/default_en.txt b/pint/default_en.txt
index 807d4ad..391febe 100644
--- a/pint/default_en.txt
+++ b/pint/default_en.txt
@@ -108,7 +108,7 @@ btu = 1.05505585262e3 * joule = Btu = BTU = british_thermal_unit
 electron_volt = 1.60217653e-19 * J = eV
 quadrillion_btu = 10**15 * btu = quad
 thm = 100000 * BTU = therm = EC_therm
-cal = 4.184 * joule = calorie = thermochemical_calorie
+calorie = 4.184 * joule = cal = thermochemical_calorie
 international_steam_table_calorie = 4.1868 * joule
 ton_TNT = 4.184e9 * joule = tTNT
 US_therm = 1.054804e8 * joule
diff --git a/pint/quantity.py b/pint/quantity.py
index 980ff10..16b1dea 100644
--- a/pint/quantity.py
+++ b/pint/quantity.py
@@ -403,9 +403,9 @@ class _Quantity(SharedRegistryObject):
         unit_power = list(q_base._units.items())[0][1]
 
         if unit_power > 0:
-            power = int(math.floor(math.log10(magnitude) / unit_power / 3)) * 3
+            power = int(math.floor(math.log10(abs(magnitude)) / unit_power / 3)) * 3
         else:
-            power = int(math.ceil(math.log10(magnitude) / unit_power / 3)) * 3
+            power = int(math.ceil(math.log10(abs(magnitude)) / unit_power / 3)) * 3
 
         prefix = SI_bases[bisect.bisect_left(SI_powers, power)]
 
diff --git a/pint/systems.py b/pint/systems.py
index e2d5564..e74b6de 100644
--- a/pint/systems.py
+++ b/pint/systems.py
@@ -434,7 +434,7 @@ class Lister(object):
         self.d = d
 
     def __dir__(self):
-        return frozenset(self.d.keys())
+        return list(self.d.keys())
 
     def __getattr__(self, item):
         return self.d[item]

diff --git a/pint/testsuite/test_quantity.py b/pint/testsuite/test_quantity.py
index fd0a6b1..0a4c18b 100644
--- a/pint/testsuite/test_quantity.py
+++ b/pint/testsuite/test_quantity.py
@@ -123,8 +123,14 @@ class TestQuantity(QuantityTestCase):
         self.assertEqual(q2.magnitude, q2b.magnitude)
         self.assertEqual(q2.units, q2b.units)
 
+        q3 = (-1000.0 * self.ureg('meters')).to_compact()
+        q3b = self.Q_(-1., 'kilometer')
+        self.assertEqual(q3.magnitude, q3b.magnitude)
+        self.assertEqual(q3.units, q3b.units)
+
         self.assertEqual('{0:#.1f}'.format(q1), '{0}'.format(q1b))
         self.assertEqual('{0:#.1f}'.format(q2), '{0}'.format(q2b))
+        self.assertEqual('{0:#.1f}'.format(q3), '{0}'.format(q3b))
 
 
     def test_default_formatting(self):

System lister error
When trying to check the available unit systems (as shown in [documentation](https://pint.readthedocs.io/en/0.7.2/systems.html)):
`>>> dir(ureg.sys)`

An error occurs:

> TypeError: **dir**() must return a list, not frozenset

**Python:** 2.7.12 (3.5.2 works fine)
**Pint:** 0.72

pint/testsuite/test_quantity.py::TestQuantity::test_format_compact
pint/testsuite/test_quantity.py::TestQuantity::test_both_symbol pint/testsuite/test_quantity.py::TestQuantity::test_context_attr pint/testsuite/test_quantity.py::TestQuantity::test_default_formatting pint/testsuite/test_quantity.py::TestQuantity::test_dimensionless_units pint/testsuite/test_quantity.py::TestQuantity::test_offset pint/testsuite/test_quantity.py::TestQuantity::test_offset_delta pint/testsuite/test_quantity.py::TestQuantity::test_pickle pint/testsuite/test_quantity.py::TestQuantity::test_quantity_bool pint/testsuite/test_quantity.py::TestQuantity::test_quantity_comparison pint/testsuite/test_quantity.py::TestQuantity::test_quantity_comparison_convert pint/testsuite/test_quantity.py::TestQuantity::test_quantity_creation pint/testsuite/test_quantity.py::TestQuantity::test_quantity_format pint/testsuite/test_quantity.py::TestQuantity::test_quantity_repr pint/testsuite/test_quantity.py::TestQuantity::test_to_base_units pint/testsuite/test_quantity.py::TestQuantityToCompact::test_derived_units pint/testsuite/test_quantity.py::TestQuantityToCompact::test_dimensionally_simple_units pint/testsuite/test_quantity.py::TestQuantityToCompact::test_fractional_exponent_units pint/testsuite/test_quantity.py::TestQuantityToCompact::test_inverse_square_units pint/testsuite/test_quantity.py::TestQuantityToCompact::test_inverse_units pint/testsuite/test_quantity.py::TestQuantityToCompact::test_limits_magnitudes pint/testsuite/test_quantity.py::TestQuantityToCompact::test_power_units pint/testsuite/test_quantity.py::TestQuantityToCompact::test_unit_parameter pint/testsuite/test_quantity.py::TestQuantityBasicMath::test_float pint/testsuite/test_quantity.py::TestQuantityBasicMath::test_fraction pint/testsuite/test_quantity.py::TestQuantityBasicMath::test_quantity_abs_round pint/testsuite/test_quantity.py::TestQuantityBasicMath::test_quantity_float_complex pint/testsuite/test_quantity.py::TestDimensions::test_dimensionality pint/testsuite/test_quantity.py::TestDimensions::test_get_dimensionality pint/testsuite/test_quantity.py::TestQuantityWithDefaultRegistry::test_dimensionality pint/testsuite/test_quantity.py::TestQuantityWithDefaultRegistry::test_get_dimensionality pint/testsuite/test_quantity.py::TestDimensionsWithDefaultRegistry::test_dimensionality pint/testsuite/test_quantity.py::TestDimensionsWithDefaultRegistry::test_get_dimensionality pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00001 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00002 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00003 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00004 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00005 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00006 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00007 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00008 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00009 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00010 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00011 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00012 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00013 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00014 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00015 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00016 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00017 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00018 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00019 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00020 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00021 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00022 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00023 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00024 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00025 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00026 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00027 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00028 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00029 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00030 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00031 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00032 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00033 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00034 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00035 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_addition_00036 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_division_with_scalar_00001 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_division_with_scalar_00002 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_division_with_scalar_00003 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_division_with_scalar_00004 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_division_with_scalar_00005 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_division_with_scalar_00006 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_division_with_scalar_00007 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_division_with_scalar_00008 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_division_with_scalar_00009 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00001 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00002 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00003 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00004 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00005 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00006 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00007 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00008 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00009 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00010 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00011 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00012 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_exponentiation_00013 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00001 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00002 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00003 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00004 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00005 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00006 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00007 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00008 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00009 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00010 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00011 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00012 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00013 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00014 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00015 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00016 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00017 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00018 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00019 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00020 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00021 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00022 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00023 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00024 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00025 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00026 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00027 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00028 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00029 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00030 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00031 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00032 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00033 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00034 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00035 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_00036 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00001 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00002 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00003 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00004 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00005 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00006 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00007 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00008 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00009 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00010 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00011 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00012 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00013 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00014 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00015 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00016 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00017 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00018 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00019 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_autoconvert_00020 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_scalar_00001 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_scalar_00002 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_scalar_00003 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_scalar_00004 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_scalar_00005 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_scalar_00006 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_multiplication_with_scalar_00007 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00001 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00002 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00003 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00004 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00005 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00006 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00007 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00008 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00009 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00010 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00011 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00012 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00013 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00014 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00015 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00016 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00017 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00018 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00019 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00020 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00021 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00022 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00023 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00024 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00025 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00026 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00027 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00028 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00029 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00030 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00031 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00032 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00033 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00034 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00035 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_subtraction_00036 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00001 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00002 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00003 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00004 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00005 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00006 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00007 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00008 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00009 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00010 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00011 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00012 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00013 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00014 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00015 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00016 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00017 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00018 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00019 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00020 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00021 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00022 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00023 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00024 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00025 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00026 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00027 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00028 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00029 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00030 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00031 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00032 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00033 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00034 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00035 pint/testsuite/test_quantity.py::TestOffsetUnitMath::test_truedivision_00036