diff --git a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java
index 7842656943fdbf6ba77612a3cfebe50bd28250e3..418c67d4dedf8657e92044a6265d16bf5c5d3492 100644
--- a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java
+++ b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java
@@ -2210,17 +2210,30 @@ public class ChadoTransactionManager
     }
     else
       featureloc.setPhase(null);
-    
-    if(gffFeature.getQualifierByName("isFminPartial") != null)
+
+    final RangeVector ranges = gffFeature.getLocation().getRanges();
+    boolean firstSeg = true;
+    boolean lastSeg  = true;
+    if(ranges.size() > 1) // define if first/last segment
+    {
+      firstSeg = false;
+      lastSeg  = false;
+      if(range_new.getStart() == gffFeature.getFirstBase())
+        firstSeg = true;
+      if(range_new.getEnd() == gffFeature.getLastBase())
+        lastSeg = true;
+    }
+
+    if(firstSeg && gffFeature.getQualifierByName("isFminPartial") != null)
       featureloc.setFminPartial(true);
     else
       featureloc.setFminPartial(false);
     
-    if(gffFeature.getQualifierByName("isFmaxPartial") != null)
+    if(lastSeg && gffFeature.getQualifierByName("isFmaxPartial") != null)
       featureloc.setFmaxPartial(true);
     else
       featureloc.setFmaxPartial(false);
-    
+
     return featureloc;
   }