diff --git a/uk/ac/sanger/artemis/components/EditMenu.java b/uk/ac/sanger/artemis/components/EditMenu.java
index a0b2dafd310b4a1229da6626bbc2ffdcc551ba3f..cff413f49eeee627453bdf8a0c547c2616ed2202 100644
--- a/uk/ac/sanger/artemis/components/EditMenu.java
+++ b/uk/ac/sanger/artemis/components/EditMenu.java
@@ -1668,23 +1668,6 @@ public class EditMenu extends SelectionMenu
         final Feature new_feature;
         if(segment_feature.getEmblFeature() instanceof GFFStreamFeature)
         {
-          // add previous sys_id
-          try
-          {
-            final GFFStreamFeature orig_feature = (GFFStreamFeature)segment_feature.getEmblFeature();
-            final ChadoCanonicalGene orig_chado_gene = orig_feature.getChadoGene();
-            final String prevId = GeneUtils.getUniqueName(orig_chado_gene.getGene());
-
-            if(!prevId.startsWith("DUP"))
-            {
-              // add prev_sys_id
-              final Qualifier synonymQualifier =
-                new Qualifier("previous_systematic_id", prevId+";current=false");
-              orig_chado_gene.getGene().getQualifiers().add(synonymQualifier);
-            }
-          }
-          catch(Exception e){}
-          
           final FeatureVector chadoGenes = new FeatureVector();
           chadoGenes.add(segment_feature);
           final Vector duplicateGenes = duplicateGeneFeatures(frame, chadoGenes, entry_group);
@@ -1728,12 +1711,28 @@ public class EditMenu extends SelectionMenu
           
           final GFFStreamFeature orig_feature = (GFFStreamFeature)segment_feature.getEmblFeature();
           final ChadoCanonicalGene orig_chado_gene = orig_feature.getChadoGene();
+          final String prevId = GeneUtils.getUniqueName(orig_chado_gene.getGene());
           GeneUtils.deleteAllFeature(
               ((uk.ac.sanger.artemis.Feature)orig_chado_gene.getGene().getUserData()), orig_chado_gene);
-          
-          GeneUtils.checkGeneBoundary((ChadoCanonicalGene)duplicateGenes.get(0));
-          GeneUtils.checkGeneBoundary(
-              ((GFFStreamFeature)new_feature.getEmblFeature()).getChadoGene());
+
+          final ChadoCanonicalGene gene1 = (ChadoCanonicalGene)duplicateGenes.get(0);
+          final ChadoCanonicalGene gene2 = ((GFFStreamFeature)new_feature.getEmblFeature()).getChadoGene();
+          if(!prevId.startsWith("DUP"))
+          {
+            // add prev_sys_id
+            final Qualifier synQualifier =
+              new Qualifier("previous_systematic_id", prevId+";current=false");
+            
+            try
+            {
+              ((Feature)gene1.getGene().getUserData()).addQualifierValues(synQualifier);
+              ((Feature)gene2.getGene().getUserData()).addQualifierValues(synQualifier);
+            }
+            catch (Exception e){}
+          }
+
+          GeneUtils.checkGeneBoundary(gene1);
+          GeneUtils.checkGeneBoundary(gene2);
         }
         else
           selection.set (segment_feature.getSegments ().lastElement ());
diff --git a/uk/ac/sanger/artemis/io/GFFStreamFeature.java b/uk/ac/sanger/artemis/io/GFFStreamFeature.java
index f4fe890ea9306bbb74053a6bc7851bef1a928159..74671a1b37fa84e661b29c51ed6c4619bac6c900 100644
--- a/uk/ac/sanger/artemis/io/GFFStreamFeature.java
+++ b/uk/ac/sanger/artemis/io/GFFStreamFeature.java
@@ -246,7 +246,12 @@ public class GFFStreamFeature extends SimpleDocumentFeature
             if(getLocation().getRanges().size() > 1)
               uniquename = getSegmentID(getLocation().getRanges());
             else
-              uniquename = duplicatePrefix+ (String)getQualifierByName("ID").getValues().get(0);
+            {
+              if( ((String)getQualifierByName("ID").getValues().get(0)).endsWith("}") )
+                uniquename = id_range_store.keys().nextElement();
+              else
+                uniquename = duplicatePrefix+ (String)getQualifierByName("ID").getValues().get(0);
+            }
           }
           else
             uniquename = duplicatePrefix+ (String)getQualifierByName("ID").getValues().get(0);