diff --git a/CONTROL/control b/CONTROL/control
index 9318728..fbf07f0 100644
--- a/CONTROL/control
+++ b/CONTROL/control
@@ -1,7 +1,7 @@
 Package: webif
 Priority: optional
 Section: web
-Version: 1.2.4
+Version: 1.2.4-1
 Architecture: mipsel
 Maintainer: af123@hummypkg.org.uk
 Depends: webif-channelicons(>=1.1.18),lighttpd(>=1.4.35-2),jim(>=0.76),jim-oo,jim-sqlite3(>=0.76),jim-cgi(>=0.7),jim-binary(>=0.76),service-control(>=2.1),busybox(>=1.20.2-1),lsof(>=4.87),epg(>=1.2.0),hmt(>=2.0.5),ssmtp,anacron,trm(>=1.1),openssl-command,nicesplice,id3v2,file,rsvsync(>=1.0.2),webif-charts(>=1.2-1),stripts(>=1.2.5-3),smartmontools,tmenu(>=1.08),ffmpeg,id3v2,multienv(>=1.6),tcpping(>=1.1),e2fsprogs,wireless-tools(>=29-1),dbupdate,recmon(>=2.0.7)
diff --git a/webif/html/diag/disk.jim b/webif/html/diag/disk.jim
index 36fcfe2..cf31713 100755
--- a/webif/html/diag/disk.jim
+++ b/webif/html/diag/disk.jim
@@ -53,10 +53,9 @@ puts {
 	<th class=odd>Raw Value</th>
 	<th class=odd>Value</th>
 	<th class=odd>Worst</th>
-	<th class=odd>Thresh</th>
-	<th class=odd>Type</th>
-	<th class=odd>Updated</th>
-	<th class=odd>When Failed</th>
+	<th class=odd>Threshold</th>
+	<th class=odd>Life Left</th>
+	<th class=odd>Notes</th>
 </tr>
 }
 
@@ -92,6 +91,10 @@ proc flags {val} {
 	return "<span title=\"$fx\">$f</span>"
 }
 
+set nolife {184 187 188 189 191 197 198}
+
+set derive {4 "" 5 sectors 9 hours 12 cycles 192 "" 193 "cycles"}
+
 set i 0
 foreach line [split [exec /mod/bin/smartctl -A $device] "\n"] {
 	regsub -all -- {[[:space:]]+} $line " " line
@@ -107,7 +110,7 @@ foreach line [split [exec /mod/bin/smartctl -A $device] "\n"] {
 		}
 		10 {
 			$settings _nval_setting "SMART_spinretry" $rval
-			if {$rval > 0} { set class orangeshade }
+			#if {$rval > 0} { set class orangeshade }
 		}
 		197 {
 			$settings _nval_setting "SMART_pending" $rval
@@ -118,8 +121,32 @@ foreach line [split [exec /mod/bin/smartctl -A $device] "\n"] {
 			if {$rval > 0} { set class redshade }
 		}
 	}
-	puts "<tr class=$class>"
-	puts "
+	if {$val <= $thresh} {
+		set class redshade
+	}
+	set left ""
+	if {$id ni $nolife &&
+	    [expr $flags & 0x18] == 0x10 && $val == $worst && $val <= 100} {
+		# Event counter which is not a rate and has not regressed.
+		set notes ""
+		set left [expr 100 - 100 * (100 - $val) / (100 - $thresh)]
+		if {$left < 10} { set class orangeshade }
+		if {$rval > 0 && [dict exists $derive $id]} {
+			set total [expr \
+			    round(($rval / (100 - $left) * 100) \
+				/ 10000) * 10000 \
+			]
+			set remain $($total - $rval)
+			set notes "$remain of approximately $total $derive($id)"
+		}
+		set left "<span title=\"$notes\">$left%</span>"
+	}
+	if {[string match "*Temperature_Cel*" $name]} {
+		append val " ([expr 100 - $val]&deg;C)"
+		append worst " ([expr 100 - $worst]&deg;C)"
+		append thresh " ([expr 100 - $thresh]&deg;C)"
+	}
+	puts "<tr class=$class>
 		<td>$id</td>
 		<td>$name</td>
 		<td>[flags $flags]</td>
@@ -127,8 +154,7 @@ foreach line [split [exec /mod/bin/smartctl -A $device] "\n"] {
 		<td>$val</td>
 		<td>$worst</td>
 		<td>$thresh</td>
-		<td>$type</td>
-		<td>$updated</td>
+		<td>$left</td>
 		<td>$when</td>
 	</tr>"
 }
@@ -174,7 +200,6 @@ puts {
 </table>
 </fieldset>
 
-
 <div class=cleft style="padding-top: 2em">
 <button id=diskack>Acknowledge any current disk faults.</button>
 </div>