diff --git a/src/beast/base/evolution/TreeWithMetaDataLogger.java b/src/beast/base/evolution/TreeWithMetaDataLogger.java
index d20fee13..35ab6ae6 100644
--- a/src/beast/base/evolution/TreeWithMetaDataLogger.java
+++ b/src/beast/base/evolution/TreeWithMetaDataLogger.java
@@ -123,11 +123,15 @@ String toNewick(Node node, List<Function> metadataList, BranchRateModel.Base bra
 		if (someMetaDataNeedsLogging) {
 			buf2.append("[&");
 			if (metadataList.size() > 0) {
+				boolean needsComma = false;
 				for (Function metadata : metadataList) {
 					if (metadata instanceof Parameter<?>) {
 						Parameter<?> p = (Parameter<?>) metadata;
 						int dim = p.getMinorDimension1();
 						if (p.getMinorDimension2() > node.getNr()) {
+							if (needsComma) {
+								buf2.append(",");
+							}
 							buf2.append(((BEASTObject) metadata).getID());
 							buf2.append('=');
 							if (dim > 1) {
@@ -152,19 +156,21 @@ String toNewick(Node node, List<Function> metadataList, BranchRateModel.Base bra
 									buf2.append(metadata.getArrayValue(node.getNr()));
 								}
 							}
+							needsComma = true;
 						} else {
 						
 						}
 					} else {
 						if (metadata.getDimension() > node.getNr()) {
+							if (needsComma) {
+								buf2.append(",");
+							}
 							buf2.append(((BEASTObject) metadata).getID());
 							buf2.append('=');
 							buf2.append(metadata.getArrayValue(node.getNr()));
+							needsComma = true;
 						}
 					}
-					if (buf2.length() > 2 && metadataList.indexOf(metadata) < metadataList.size() - 1) {
-						buf2.append(",");
-					}
 				}
 				if (buf2.length() > 2 && branchRateModel != null) {
 					buf2.append(",");