diff --git a/mod/admin.php b/mod/admin.php
index 5e9c705ea4..39677fb386 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -229,12 +229,69 @@ function admin_page_federation(&$a) {
     $platforms = array('Diaspora', 'Friendica', '%%red%%', 'Hubzilla', 'GNU Social', 'StatusNet');
     $counts = array();
     foreach ($platforms as $p) {
-	// get a totaƶ count for the platform, the name and version of the
+	// get a total count for the platform, the name and version of the
 	// highest version and the protocol tpe
-	$c = q('select count(*), platform, network, version from gserver where platform like "'.$p.'" and last_contact > last_failure order by version asc;');
+	$c = q('select count(*), platform, network, version from gserver
+	    where platform like "'.$p.'" and last_contact > last_failure
+	    order by version asc;');
 	// what versions for that platform do we know at all?
 	// again only the active nodes
-	$v = q('select count(*), version from gserver where last_contact > last_failure and platform like "'.$p.'" group by version order by version;');
+	$v = q('select count(*), version from gserver
+	    where last_contact > last_failure and platform like "'.$p.'" 
+	    group by version
+	    order by version;');
+	//
+	// clean up version numbers
+	//
+	// in the DB the Diaspora versions have the format x.x.x.x-xx the last
+	// part (-xx) should be removed to clean up the versions from the "head
+	// commit" information and combined into a single entry for x.x.x.x
+	if ($p=='Diaspora') {
+	    $newV = array();
+	    $newVv = array();
+	    foreach($v as $vv) {
+		$newVC = $vv['count(*)'];
+		$newVV = $vv['version'];
+		$posDash = strpos($newVV, '-');
+		if ($posDash) 
+		    $newVV = substr($newVV, 0, $posDash);
+		if (isset($newV[$newVV]))
+		{ 
+		    $newV[$newVV] += $newVC; 
+		} else { 
+		    $newV[$newVV] = $newVC; 
+		}
+	    }
+	    foreach ($newV as $key => $value) {
+		array_push($newVv, array('count(*)'=>$value, 'version'=>$key));
+	    }
+	    $v = $newVv;
+	}
+	// early friendica versions have the format x.x.xxxx where xxxx is the
+	// DB version stamp; those should be operated out and versions be
+	// conbined
+	if ($p=='Friendica') {
+	    $newV = array();
+	    $newVv = array();
+	    foreach ($v as $vv) {
+		$newVC = $vv['count(*)'];
+		$newVV = $vv['version'];
+		$lastDot = strrpos($newVV,'.');
+		$len = strlen($newVV)-1;
+		if ($lastDot == $len-4)
+		    $newVV = substr($newVV, 0, $lastDot);
+		if (isset($newV[$newVV])) 
+		{ 
+		    $newV[$newVV] += $newVC; 
+		} else { 
+		    $newV[$newVV] = $newVC; 
+		}
+	    }
+	    foreach ($newV as $key => $value) {
+		array_push($newVv, array('count(*)'=>$value, 'version'=>$key));
+	    }
+	    $v = $newVv;
+	}
 	// the 3rd array item is needed for the JavaScript graphs as JS does
 	// not like some characters in the names of variables...
 	$counts[$p]=array($c[0], $v, str_replace(array(' ','%'),'',$p));