Index: /branches/1.3/coverager/coverager.php
===================================================================
--- /branches/1.3/coverager/coverager.php	(revision 614)
+++ /branches/1.3/coverager/coverager.php	(revision 615)
@@ -108,5 +108,9 @@
 				ob_start();
 				highlight_string($source);
-				$lines = explode('<br />', str_replace("\n", "", ob_get_clean()));
+				$lines = str_replace("\n", "", ob_get_clean());
+				$lines = str_replace('<code>', '', $lines);
+				$lines = str_replace('</code>', '', $lines);
+				$lines = preg_replace('(^<span[^>]*>|</span>$)', '', $lines);
+				$lines = explode('<br />', $lines);
 				$last = array_pop($lines);
 				$filecov = sprint_cov($fileinfo['cov'], $lines, false);
@@ -295,8 +299,28 @@
 function sprint_cov($cov, $lines, $encode = true)
 {
+	$lastattr = null;
 	foreach ($lines as $l => $line) {
 		$offs = $l + 1;
 		if ($encode) {
 			$line = str_replace("\n", "", htmlspecialchars($line));
+		}
+		else if ($line !== "") {
+			if (substr($line, 0, 7) == '</span>') {
+				$lastattr = null;
+				$line = substr($line, 7);
+			}
+			else if (isset($lastattr)) {
+				$line = $lastattr . $line;
+			}
+
+			if (preg_match('!(<span[^>]+>|</span>)[^<>]*$!', $line, $m)) {
+				if ($m[1] == '</span>') {
+					$lastattr = null;
+				}
+				else {
+					$line .= '</span>';
+					$lastattr = $m[1];
+				}
+			}
 		}
 		if (isset($cov[$offs])) {
@@ -312,4 +336,5 @@
 	return implode('', $lines);
 }
+
 if (!function_exists('xcache_coverager_decode')) {
 	function xcache_coverager_decode($bytes)
Index: /branches/1.3/coverager/coverager.css
===================================================================
--- /branches/1.3/coverager/coverager.css	(revision 614)
+++ /branches/1.3/coverager/coverager.css	(revision 615)
@@ -1,4 +1,5 @@
 h1 { text-align: center; display: block; }
 input, table { font-family: sans-serif; font-size: 11px; }
+th { font-size: 12px; }
 table { border-collapse: collapse; }
 table.cycles { border: 1px solid black; margin-top: 5px; margin-bottom: 5px; }
Index: /branches/1.3/coverager.c
===================================================================
--- /branches/1.3/coverager.c	(revision 593)
+++ /branches/1.3/coverager.c	(revision 615)
@@ -521,5 +521,5 @@
 
 	for (; len >= sizeof(long) * 2; len -= sizeof(long) * 2, p += 2) {
-		add_index_long(return_value, p[0], p[1]);
+		add_index_long(return_value, p[0], p[1] < 0 ? 0 : p[1]);
 	}
 }
