diff --git a/uk/ac/sanger/artemis/components/AddMenu.java b/uk/ac/sanger/artemis/components/AddMenu.java
index 6df327cd838d0a4248e4b2a4229d76659dd00730..4e8da4c5ca7af6320025880094f2a8bfede15a76 100644
--- a/uk/ac/sanger/artemis/components/AddMenu.java
+++ b/uk/ac/sanger/artemis/components/AddMenu.java
@@ -20,7 +20,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  *
- * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/AddMenu.java,v 1.35 2008-02-06 12:17:53 tjc Exp $
+ * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/AddMenu.java,v 1.36 2008-03-12 20:57:24 tjc Exp $
  */
 
 package uk.ac.sanger.artemis.components;
@@ -73,7 +73,7 @@ import javax.swing.KeyStroke;
  *  should have been called CreateMenu.
  *
  *  @author Kim Rutherford
- *  @version $Id: AddMenu.java,v 1.35 2008-02-06 12:17:53 tjc Exp $
+ *  @version $Id: AddMenu.java,v 1.36 2008-03-12 20:57:24 tjc Exp $
  **/
 public class AddMenu extends SelectionMenu 
 {
@@ -898,6 +898,18 @@ public class AddMenu extends SelectionMenu
         if(i==0 && r.getStart()==1)
         {
           prevEnd = r.getEnd();
+          
+          // check for overlapping CDS
+          if(i<cdsRanges.size()-1)
+          {
+        	int next = i+1; 	
+            while(((Range)cdsRanges.get(next)).getStart() <= prevEnd)
+            {
+              prevEnd = ((Range)cdsRanges.get(next)).getEnd();
+              i = next;
+              next++;
+            }
+          }
           continue;
         }
         
@@ -917,7 +929,19 @@ public class AddMenu extends SelectionMenu
               location, qualifiers);
           prevEnd = r.getEnd();
           
-          if(i==cdsRanges.size()-1)
+          // check for overlapping CDS
+          if(i<cdsRanges.size()-1)
+          {
+        	int next = i+1;
+            while( next < cdsRanges.size() &&
+            	  ((Range)cdsRanges.get(next)).getStart() <= prevEnd)
+            {
+              prevEnd = ((Range)cdsRanges.get(next)).getEnd();
+              i = next;
+              next++;
+            }
+          }
+          else if(i==cdsRanges.size()-1)
           {
             if(entry_group.getSequenceLength() > r.getEnd())
             {