diff --git a/Applet/NDTConstants.java b/Applet/NDTConstants.java
index bfe691f..6fb1c1c 100644
--- a/Applet/NDTConstants.java
+++ b/Applet/NDTConstants.java
@@ -18,6 +18,7 @@ public class NDTConstants {
 	public static final String META_BROWSER_OS = "client.browser.name";
 	public static final String META_CLIENT_KERNEL_VERSION = "client.kernel.version";
 	public static final String META_CLIENT_VERSION = "client.version";
+        public static final String META_CLIENT_APPLICATION = "client.application";
 
 	/*
 	 * TODO for a later release: Version could be moved to some "configurable"
@@ -108,12 +109,10 @@ public class NDTConstants {
 	public static final int TCP_MAX_RECV_WIN_SIZE = 65535;
 	 
 	// Section: Data units
-	public static final int KILO = 1000; // Used in conversions from
-											// seconds->mS,
-	public static final int KILO_BITS = 1024;// Used in kilobits->bits
-												// conversions
-	public static final double EIGHT = 8.0; // Used in octal number, conversions from
-										// Bytes-> bits etc
+	public static final int KILO = 1000; // Used in conversions from seconds->mS,
+	public static final int KILO_BITS = 1024;// Used in kilobits->bits conversions
+	public static final double EIGHT = 8.0; // Used in octal number, conversions from Bytes-> bits etc
+        // EIGHT is a double to minimize overflow when converting.
 
 	// Section: Duplex mismatch conditions
 	public static final int DUPLEX_OK_INDICATOR = 0;
diff --git a/Applet/Tcpbw100.java b/Applet/Tcpbw100.java
index 1eb4486..5ae30dc 100644
--- a/Applet/Tcpbw100.java
+++ b/Applet/Tcpbw100.java
@@ -192,6 +192,7 @@ public class Tcpbw100 extends JApplet implements ActionListener {
 	private ResourceBundle _resBundDisplayMsgs;
 	private String _sLang = "en";
 	private String _sCountry = "US";
+	private String _sClient = "applet";
 	// private static String lang="nb";
 	// private static String country="NO";
 	/***/
@@ -276,7 +277,7 @@ public class Tcpbw100 extends JApplet implements ActionListener {
 	public static void main(String[] args) {
 		JFrame frame = new JFrame("ANL/Internet2 NDT (applet)");
 		if (args.length != 1) {
-			System.out.println("Usage: java -jar Tcpbw100.jar " + "HOST");
+			System.out.println("Usage: java -jar Tcpbw100.jar <hostname> [client-id]");
 			System.exit(0);
 		}
 		final Tcpbw100 applet = new Tcpbw100();
@@ -288,6 +289,9 @@ public class Tcpbw100 extends JApplet implements ActionListener {
 		});
 		applet._bIsApplication = true;
 		applet.sHostName = args[0];
+                if (args.length > 1) {
+                        applet._sClient = args[1];
+                }
 		frame.getContentPane().add(applet);
 		frame.setSize(700, 320);
 		applet.init();
@@ -743,6 +747,9 @@ public class Tcpbw100 extends JApplet implements ActionListener {
 		if (getParameter("language") != null) {
 			_sLang = getParameter("language");
 		}
+		if (getParameter("client") != null) {
+			_sClient = getParameter("client");
+		}
 
 		try {
 			_localeObj = new Locale(_sLang, _sCountry);
@@ -2142,7 +2149,7 @@ public class Tcpbw100 extends JApplet implements ActionListener {
 	 * @see Protocol#send_msg(byte bParamType, byte[] baParamTab) These methods
 	 *      indicate more information about IOException
 	 * */
-	public boolean test_meta(Protocol paramProtoObj) throws IOException {
+	public boolean test_meta(Protocol paramProtoObj, String application) throws IOException {
 		Message msg = new Message();
 		// Start META tests
 		if ((_yTests & NDTConstants.TEST_META) == NDTConstants.TEST_META) {
@@ -2220,11 +2227,10 @@ public class Tcpbw100 extends JApplet implements ActionListener {
 			paramProtoObj.send_msg(MessageType.TEST_MSG,
 					(NDTConstants.META_CLIENT_KERNEL_VERSION + ":" + System
 							.getProperty("os.version")).getBytes());
-			paramProtoObj
-					.send_msg(
-							MessageType.TEST_MSG,
-							(NDTConstants.META_CLIENT_VERSION + ":" + NDTConstants.VERSION)
-									.getBytes());
+			paramProtoObj.send_msg(MessageType.TEST_MSG,
+                                               (NDTConstants.META_CLIENT_VERSION + ":" + NDTConstants.VERSION).getBytes());
+			paramProtoObj.send_msg(MessageType.TEST_MSG,
+                                               (NDTConstants.META_CLIENT_APPLICATION + ":" + application) .getBytes());
 
 			// Client can send any number of such meta data in a TEST_MSG
 			// format, and signal
@@ -2592,7 +2598,7 @@ public class Tcpbw100 extends JApplet implements ActionListener {
 				break;
 			case NDTConstants.TEST_META:
 				sPanel.setText(_resBundDisplayMsgs.getString("meta"));
-				if (test_meta(protocolObj)) {
+				if (test_meta(protocolObj, _sClient)) {
 					_resultsTxtPane.append(_sErrMsg);
 					_resultsTxtPane.append(_resBundDisplayMsgs
 							.getString("metaFailed") + "\n");
@@ -3861,4 +3867,3 @@ public class Tcpbw100 extends JApplet implements ActionListener {
 	}
 
 } // class: Tcpbw100
-
diff --git a/src/logging.c b/src/logging.c
index 7eac568..3c0263e 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -1064,6 +1064,7 @@ void writeMeta(int compress, int cputime, int snaplog, int tcpdump) {
 		fprintf(fp, "client hostname: %s\n", meta.client_name);
 		fprintf(fp, "client OS name: %s\n", meta.client_os);
 		fprintf(fp, "client_browser name: %s\n", meta.client_browser);
+                fprintf(fp, "client_application name: %s\n", meta.client_application);
 		fprintf(fp, "Summary data: %s\n", meta.summary);
 		if (meta.additional) {
 			fprintf(fp, " * Additional data:\n");
diff --git a/src/logging.h b/src/logging.h
index 89ada15..d8431f8 100644
--- a/src/logging.h
+++ b/src/logging.h
@@ -73,6 +73,7 @@ struct metadata {
 	char client_name[64]; // client's host-name
 	char client_os[32]; // client OS name
 	char client_browser[32]; // client's browser name
+        char client_application[32]; // client application name
 	int ctl_port; // ctl port
 	char server_ip[64]; // server IP address
 	char server_name[64]; // server's host-name
diff --git a/src/test_meta.h b/src/test_meta.h
index 2cfbf33..4b9e0c5 100644
--- a/src/test_meta.h
+++ b/src/test_meta.h
@@ -12,6 +12,7 @@
 #define META_BROWSER_OS "client.browser.name"
 #define META_CLIENT_KERNEL_VERSION "client.kernel.version"
 #define META_CLIENT_VERSION "client.version"
+#define META_CLIENT_APPLICATION "client.application"
 
 #define META_TEST_LOG "META test"
 
diff --git a/src/test_meta_clt.c b/src/test_meta_clt.c
index 45203c7..f665976 100644
--- a/src/test_meta_clt.c
+++ b/src/test_meta_clt.c
@@ -82,6 +82,8 @@ int test_meta_clt(int ctlSocket, char tests, char* host, int conn_options) {
 		printf("sending meta information to server . . . . . ");
 		fflush(stdout);
 
+		sprintf(buff, "%s:%s", META_CLIENT_APPLICATION, "cli");
+		send_msg(ctlSocket, TEST_MSG, buff, strlen(buff));
 		// send client os name details
 		if ((fp = fopen("/proc/sys/kernel/ostype", "r")) == NULL) {
 			log_println(0, "Unable to determine client os type.");
diff --git a/src/test_meta_srv.c b/src/test_meta_srv.c
index 05e3fca..541e4d0 100644
--- a/src/test_meta_srv.c
+++ b/src/test_meta_srv.c
@@ -119,6 +119,11 @@ metaentry	*new_entry = NULL;
 				snprintf(meta.client_os, sizeof(meta.client_os), "%s", value);
 				/*continue;*/
 			}
+			
+			if (strcmp(META_CLIENT_APPLICATION, buff) == 0) {
+				snprintf(meta.client_application, sizeof(meta.client_application), "%s", value);
+				/*continue;*/
+			}
 
 			if (strcmp(META_BROWSER_OS, buff) == 0) {
 				snprintf(meta.client_browser, sizeof(meta.client_browser), "%s",
diff --git a/tcpbw100.template b/tcpbw100.template
index e988dc5..ed638d4 100644
--- a/tcpbw100.template
+++ b/tcpbw100.template
@@ -72,6 +72,7 @@ It can also identify 2 serious error conditions:</font>
 
   <PARAM NAME="language" VALUE="en">
   <PARAM NAME="country" VALUE="US">
+  <PARAM NAME="client" VALUE="applet">
 
 </applet>
 </td></tr></table>
