diff --git a/uk/ac/sanger/artemis/components/TransferAnnotationTool.java b/uk/ac/sanger/artemis/components/TransferAnnotationTool.java
index 8b785875e284fa19db1c63f555a1a146fc5e068c..fe9193e4d4b4eb3732636bdd9a7948cbbb753b79 100644
--- a/uk/ac/sanger/artemis/components/TransferAnnotationTool.java
+++ b/uk/ac/sanger/artemis/components/TransferAnnotationTool.java
@@ -750,10 +750,19 @@ public class TransferAnnotationTool extends JFrame
     {
       StringVector newValues =  qualifier.getValues();
       StringVector valuesToAdd = new StringVector();
+
       for (int k = 0; k < newValues.size(); k++)
       {
         if(!values.contains(newValues.get(k)))
-          valuesToAdd.add(newValues.get(k));
+        {
+          if(qualifier.getName().equals("history"))
+          {
+        	if(!uk.ac.sanger.artemis.components.genebuilder.cv.HistoryBox.contains(values, (String)newValues.get(k)))
+        	  valuesToAdd.add(newValues.get(k));
+          }
+          else
+            valuesToAdd.add(newValues.get(k));
+        }
       }
 
       if(valuesToAdd.size() == 0)
diff --git a/uk/ac/sanger/artemis/components/genebuilder/cv/HistoryBox.java b/uk/ac/sanger/artemis/components/genebuilder/cv/HistoryBox.java
index 2cecf326ee985d5e1cc7a171713647ac543a47ec..184a0624356967cf109a0e73160651feff1a689b 100644
--- a/uk/ac/sanger/artemis/components/genebuilder/cv/HistoryBox.java
+++ b/uk/ac/sanger/artemis/components/genebuilder/cv/HistoryBox.java
@@ -44,7 +44,7 @@ import uk.ac.sanger.artemis.io.QualifierVector;
 import uk.ac.sanger.artemis.util.DatabaseDocument;
 import uk.ac.sanger.artemis.util.StringVector;
 
-class HistoryBox extends AbstractCvBox
+public class HistoryBox extends AbstractCvBox
 {
   private Box xBox;
   private int value_index;
@@ -164,6 +164,35 @@ class HistoryBox extends AbstractCvBox
     
     return false;
   }
+  
+  public static boolean contains(StringVector oldQualValues, String newQualString)
+  {
+	for(int i=0; i<oldQualValues.size(); i++)
+	{
+	  String oldQualString = (String) oldQualValues.get(i);
+      String oldStr = getField("term=", oldQualString);
+      String newStr = getField("term=", newQualString);
+      if(!oldStr.equals(newStr))
+        continue;
+    
+      oldStr = getFieldIgnoreSeparator("qualifier", oldQualString);
+      newStr = getFieldIgnoreSeparator("qualifier", newQualString);
+      if(!oldStr.equals(newStr))
+        continue;
+    
+      oldStr = getField("date=", oldQualString);
+      newStr = getField("date=", newQualString);
+      if(!oldStr.equals(newStr))
+        continue;
+    
+      oldStr = getField("curatorName=", oldQualString);
+      newStr = getField("curatorName=", newQualString);
+      if(oldStr.equals(newStr))
+        return true;
+	}
+	
+    return false;
+  }
 
   protected void updateQualifier(QualifierVector qv)
   {