diff --git a/src/sakia/core/money/quant_zerosum.py b/src/sakia/core/money/quant_zerosum.py
index 9bb7e21124a238988bfdbdf17189baf51462231b..a27bdbf937bcc173653dbfa9b2d4b55f699f4e90 100644
--- a/src/sakia/core/money/quant_zerosum.py
+++ b/src/sakia/core/money/quant_zerosum.py
@@ -33,13 +33,13 @@ class QuantitativeZSum:
         :param sakia.core.community.Community community: Community instance
         :return: int
         """
-        ud_block = yield from self.community.get_ud_block()
-        if ud_block and ud_block['membersCount'] > 0:
+        current = yield from self.community.get_block()
+        if current and current['membersCount'] > 0:
             monetary_mass = yield from self.community.monetary_mass()
-            average = monetary_mass / ud_block['membersCount']
+            average = monetary_mass / current['membersCount']
         else:
             average = 0
-        return self.amount - average
+        return self.amount - monetary_mass
 
     @asyncio.coroutine
     def differential(self):
@@ -50,7 +50,11 @@ class QuantitativeZSum:
     def localized(self, units=False, international_system=False):
         value = yield from self.value()
 
-        localized_value = QLocale().toString(float(value), 'f', 0)
+        prefix = ""
+        if international_system:
+            localized_value, prefix = Quantitative.to_si(value, self.app.preferences['digits_after_comma'])
+        else:
+            localized_value = QLocale().toString(float(value), 'f', 0)
 
         if units:
             return QCoreApplication.translate("QuantitativeZSum",
diff --git a/src/sakia/core/money/quantitative.py b/src/sakia/core/money/quantitative.py
index e0072fbfb512c4efa42462a455a06157fd4d9018..4ac9024f329d17ce3bf813dd41358612dac0d8d5 100644
--- a/src/sakia/core/money/quantitative.py
+++ b/src/sakia/core/money/quantitative.py
@@ -39,8 +39,15 @@ class Quantitative():
         value = yield from self.value()
         return value
 
-    def _to_si(self, value):
+    @staticmethod
+    def to_si(value, digits):
         prefixes = ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y', 'z', 'y']
+        if value < 0:
+            value = -value
+            multiplier = -1
+        else:
+            multiplier = 1
+
         scientific_value = value
         prefix_index = 0
         prefix = ""
@@ -51,10 +58,9 @@ class Quantitative():
 
         if prefix_index < len(prefixes):
             prefix = prefixes[prefix_index]
-            localized_value = QLocale().toString(float(scientific_value), 'f',
-                                                 self.app.preferences['digits_after_comma'])
+            localized_value = QLocale().toString(float(scientific_value * multiplier), 'f', digits)
         else:
-            localized_value = QLocale().toString(float(value), 'f', 0)
+            localized_value = QLocale().toString(float(value * multiplier), 'f', 0)
 
         return localized_value, prefix
 
@@ -63,7 +69,7 @@ class Quantitative():
         value = yield from self.value()
         prefix = ""
         if international_system:
-            localized_value, prefix = self._to_si(value)
+            localized_value, prefix = Quantitative.to_si(value, self.app.preferences['digits_after_comma'])
         else:
             localized_value = QLocale().toString(float(value), 'f', 0)
 
@@ -81,7 +87,7 @@ class Quantitative():
         value = yield from self.differential()
         prefix = ""
         if international_system:
-            localized_value, prefix = self._to_si(value)
+            localized_value, prefix = Quantitative.to_si(value, self.app.preferences['digits_after_comma'])
         else:
             localized_value = QLocale().toString(float(value), 'f', 0)
 
diff --git a/src/sakia/core/money/relative.py b/src/sakia/core/money/relative.py
index 30d83ff4de45c20aa3a0bba11bbdefdd13127bb7..171a09fe15c7a54272456348cdcf2b832caaedc8 100644
--- a/src/sakia/core/money/relative.py
+++ b/src/sakia/core/money/relative.py
@@ -42,8 +42,14 @@ class Relative():
         value = yield from self.value()
         return value
 
-    def _to_si(self, value):
+    @staticmethod
+    def to_si(value, digits):
         prefixes = ['', 'd', 'c', 'm', 'µ', 'n', 'p', 'f', 'a', 'z', 'y']
+        if value < 0:
+            value = -value
+            multiplier = -1
+        else:
+            multiplier = 1
         scientific_value = value
         prefix_index = 0
         prefix = ""
@@ -57,11 +63,9 @@ class Relative():
 
         if prefix_index < len(prefixes):
             prefix = prefixes[prefix_index]
-            localized_value = QLocale().toString(float(scientific_value), 'f',
-                                                 self.app.preferences['digits_after_comma'])
+            localized_value = QLocale().toString(float(scientific_value * multiplier), 'f', digits)
         else:
-            localized_value = QLocale().toString(float(value), 'f',
-                                                 self.app.preferences['digits_after_comma'])
+            localized_value = QLocale().toString(float(value * multiplier), 'f', digits)
 
         return localized_value, prefix
 
@@ -70,7 +74,7 @@ class Relative():
         value = yield from self.value()
         prefix = ""
         if international_system:
-            localized_value, prefix = self._to_si(value)
+            localized_value, prefix = Relative.to_si(value, self.app.preferences['digits_after_comma'])
         else:
             localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
 
@@ -87,7 +91,7 @@ class Relative():
         value = yield from self.differential()
         prefix = ""
         if international_system and value != 0:
-            localized_value, prefix = self._to_si(value)
+            localized_value, prefix = Relative.to_si(value, self.app.preferences['digits_after_comma'])
         else:
             localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
 
diff --git a/src/sakia/core/money/relative_zerosum.py b/src/sakia/core/money/relative_zerosum.py
index f32b5274eb0b1c25c36cb46a15166615da4b9b4d..a98ae864052ca758e99e91317c430b99d415088b 100644
--- a/src/sakia/core/money/relative_zerosum.py
+++ b/src/sakia/core/money/relative_zerosum.py
@@ -2,6 +2,7 @@ from PyQt5.QtCore import QCoreApplication, QT_TRANSLATE_NOOP, QLocale
 from .relative import Relative
 import asyncio
 
+
 class RelativeZSum:
     _NAME_STR_ = QT_TRANSLATE_NOOP('RelativeZSum', 'Relat Z-sum')
     _REF_STR_ = QT_TRANSLATE_NOOP('RelativeZSum', "{0} R0 {1}")
@@ -33,17 +34,15 @@ class RelativeZSum:
         :param sakia.core.community.Community community: Community instance
         :return: float
         """
-        ud_block = yield from self.community.get_ud_block()
-        if ud_block and ud_block['membersCount'] > 0:
+        current = yield from self.community.get_block()
+        if current and current['membersCount'] > 0:
             monetary_mass = yield from self.community.monetary_mass()
             dividend = yield from self.community.dividend()
-            median = monetary_mass / ud_block['membersCount']
-            relative_value = self.amount / float(dividend)
-            relative_median = median / dividend
+            average = monetary_mass / current['membersCount']
+            rz_value = (self.amount - average) / float(dividend)
         else:
-            relative_value = self.amount
-            relative_median = 0
-        return relative_value - relative_median
+            rz_value = self.amount
+        return rz_value
 
     @asyncio.coroutine
     def differential(self):
@@ -53,7 +52,11 @@ class RelativeZSum:
     def localized(self, units=False, international_system=False):
         value = yield from self.value()
 
-        localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
+        prefix = ""
+        if international_system:
+            localized_value, prefix = Relative.to_si(value, self.app.preferences['digits_after_comma'])
+        else:
+            localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
 
         if units:
             return QCoreApplication.translate("RelativeZSum", RelativeZSum._REF_STR_)\
@@ -65,7 +68,11 @@ class RelativeZSum:
     def diff_localized(self, units=False, international_system=False):
         value = yield from self.differential()
 
-        localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
+        prefix = ""
+        if international_system and value != 0:
+            localized_value, prefix = Relative.to_si(value, self.app.preferences['digits_after_comma'])
+        else:
+            localized_value = QLocale().toString(float(value), 'f', self.app.preferences['digits_after_comma'])
 
         if units:
             return QCoreApplication.translate("RelativeZSum", RelativeZSum._REF_STR_)\