diff --git a/uk/ac/sanger/artemis/io/PublicDBDocumentEntry.java b/uk/ac/sanger/artemis/io/PublicDBDocumentEntry.java
index a6f00db820f6a98f5fdc1d94fc87004595e3ae44..b8ab91767b5c187410e5374f35a3fcb75eff9e9f 100644
--- a/uk/ac/sanger/artemis/io/PublicDBDocumentEntry.java
+++ b/uk/ac/sanger/artemis/io/PublicDBDocumentEntry.java
@@ -250,6 +250,13 @@ public class PublicDBDocumentEntry extends SimpleDocumentEntry
     	addNewQualifier(qualifiers, newIDQualifier);
     	geneQualifiers.removeQualifierByName("ID");
       }
+      else if(ntranscripts == 1)
+      {
+        if(qualifiers.getQualifierByName("isFminPartial") != null)
+          addNewQualifier(qualifiers, qualifiers.getQualifierByName("isFminPartial"));
+        if(qualifiers.getQualifierByName("isFmaxPartial") != null)
+          addNewQualifier(qualifiers, qualifiers.getQualifierByName("isFmaxPartial"));
+      }
       combineQualifiers(qualifiers, geneQualifiers, true);
     }
     else if(GeneUtils.isNonCodingTranscripts(key))
@@ -266,6 +273,7 @@ public class PublicDBDocumentEntry extends SimpleDocumentEntry
     
     try
     {
+      location = handlePartials(qualifiers, location);
       for(int i=0; i<DATABASE_QUALIFIERS_TO_MAP.length; i++)
       {
         if(!getEntryInformation().isValidQualifier(DATABASE_QUALIFIERS_TO_MAP[i][0]))
@@ -355,6 +363,8 @@ public class PublicDBDocumentEntry extends SimpleDocumentEntry
         if(start != feature.getLocation().getTotalRange().getStart())
           return null;
         
+        if(feature.getLocation().isComplement())
+          ranges.reverse();
         location =
           new Location(ranges, feature.getLocation().isComplement());
       }
@@ -743,6 +753,40 @@ public class PublicDBDocumentEntry extends SimpleDocumentEntry
     }
   }
   
+  /**
+   * Use '<' and '>' signs in the location descriptors to
+   * indicate that the sequence is partial.
+   * @param qualifiers
+   * @param location
+   * @return
+   */
+  private Location handlePartials(QualifierVector qualifiers, Location location)
+  {
+    if(qualifiers.getQualifierByName("isFminPartial") != null)
+    {
+      try
+      {
+        location = new Location(location.toString().replaceFirst("(\\d)", "<$1"));
+      }
+      catch (LocationParseException e)
+      {
+        e.printStackTrace();
+      }
+    }
+    else if(qualifiers.getQualifierByName("isFmaxPartial") != null)
+    {
+      try
+      {
+        location = new Location(location.toString().replaceAll("^(.*)(\\.)(.*)$","$1$2>$3"));
+      }
+      catch (LocationParseException e)
+      {
+        e.printStackTrace();
+      }
+    }
+    return location;
+  }
+  
   /**
    * Change the stop_codon_redefined_as_selenocysteine SO qualifier
    * to the transl_except EMBL qualifier.