--- func.inc.php.old	2015-01-07 15:13:49.000000000 +0100
+++ func.inc.php	2015-01-07 15:18:23.000000000 +0100
@@ -606,20 +606,32 @@
 
 	// special processing of uptime
 	if ($options['units'] == 'uptime') {
 		return convertUnitsUptime($options['value']);
 	}
 
 	// special processing for seconds
 	if ($options['units'] == 's') {
 		return convertUnitsS($options['value'], $options['ignoreMillisec']);
 	}
+	
+	// Do not convert values if unit starts with '!'
+	// If the unit starts with '![num]', num is the number of points after the decimal to print
+	if (strpos($options['units'], '!', 0) === 0) {
+		if (preg_match("/^\[(\d+)\](.*)/", substr($options['units'], 1), $matches)) {
+		$precision = $matches[1];
+			return sprintf("%.".$precision."f", $options['value']) . ' ' . $matches[2];
+		}
+		else {
+			return $options['value'] . ' ' . substr($options['units'], 1);
+		}
+	}
 
 	// any other unit
 	// black list of units that should have no multiplier prefix (K, M, G etc) applied
 	$blackList = array('%', 'ms', 'rpm', 'RPM');
 
 	if (in_array($options['units'], $blackList) || (zbx_empty($options['units'])
 			&& ($options['convert'] == ITEM_CONVERT_WITH_UNITS))) {
 		if (abs($options['value']) >= ZBX_UNITS_ROUNDOFF_THRESHOLD) {
 			$options['value'] = round($options['value'], ZBX_UNITS_ROUNDOFF_UPPER_LIMIT);
 		}
