diff --git a/exec/gnats_cvs.js b/exec/gnats_cvs.js
index d5cd7a84381bd3221c7c2fd68d30d6e73d934150..8cd93813145d612aa6e5f07a7f01e490557a433f 100755
--- a/exec/gnats_cvs.js
+++ b/exec/gnats_cvs.js
@@ -31,21 +31,29 @@ while((pr=myRe.exec(logmsg))!=undefined) {
 	stateprs[pr[1]]=pr[2];
 }
 
-for(pr in auditprs) {
-	if(name != gnats.get_field(pr,"Responsible")) {
-		log("Changeing responsible to "+name+" for PR: "+pr);
-		if(!gnats.replace(pr, "Responsible", name, "CVS Commit"))
+for(pr in stateprs) {
+	var oldstate = gnats.get_field(pr,"State");
+	oldstate = oldstate.replace(/[\r\n]/g,'');
+	if(stateprs[pr] != oldstate) {
+		log("Changeing state of PR: "+pr+" to "+stateprs[pr]);
+		if(!gnats.replace(pr, "State", stateprs[pr], logmsg))
 			handle_error();
+		else
+			delete auditprs[pr];
 	}
-	log("Appending log info to PR: "+pr);
-	if(!gnats.append(pr,"Audit-Trail", logmsg, "CVS Commit"))
-		handle_error();
 }
 
-for(pr in stateprs) {
-	if(stateprs[pr] != gnats.get_field(pr,"State")) {
-		log("Changeing state of PR: "+pr+" to "+stateprs[pr]);
-		if(!gnats.replace(pr, "State", stateprs[pr], "CVS Commit"))
+for(pr in auditprs) {
+	var oldname = gnats.get_field(pr,"Responsible");
+	oldname = oldname.replace(/[\r\n]/g,'');
+	if(name != oldname) {
+		log("Changeing responsible to "+name+" for PR: "+pr);
+		if(!gnats.replace(pr, "Responsible", name, logmsg))
+			handle_error();
+	}
+	else {
+		log("Sending followup to PR: "+pr);
+		if(!gnats.send_followup(pr, name, name, logmsg))
 			handle_error();
 	}
 }