diff --git a/test/uk/ac/sanger/artemis/components/variant/WriteVCFTest.java b/test/uk/ac/sanger/artemis/components/variant/WriteVCFTest.java
index b0b0c40058da252a34398cfa08bc429668b59f3f..94d67d81a263b0e96e1960a67354a89e6dd550c2 100644
--- a/test/uk/ac/sanger/artemis/components/variant/WriteVCFTest.java
+++ b/test/uk/ac/sanger/artemis/components/variant/WriteVCFTest.java
@@ -18,6 +18,7 @@ import javax.swing.JPanel;
 
 import junit.framework.Assert;
 
+import org.junit.BeforeClass;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -41,8 +42,8 @@ import uk.ac.sanger.artemis.util.DocumentFactory;
  */
 public class WriteVCFTest
 {
-  private VCFview vcfView;
-  
+  private static VCFview vcfView;
+  private static VCFview bcfView;
   
   // TEST WRITING REGIONS
   
@@ -173,7 +174,7 @@ public class WriteVCFTest
   @Test
   public void testFeatureWriteFastaSNP()
   {
-    StringWriter writer = getFeatureWriter("SPN23F03630,SPN23F03800,SPN23F04290");
+    StringWriter writer = getFeatureWriter("SPN23F03630,SPN23F03800,SPN23F04290", vcfView);
 
     StringBuffer fastaBuff = new StringBuffer(">test.embl.gz\n");
     StringBuffer basesBuff = new StringBuffer();
@@ -271,6 +272,115 @@ public class WriteVCFTest
 
     assertEquals("Export FASTA feature ", writer.toString(), fastaBuff.toString());
   }
+  
+  
+  /**
+   * Write FASTA, from a feature selection on the forward strand.
+   */
+  @Test
+  public void testBCFFeatureWriteFastaSNP()
+  {
+    StringWriter writer = getFeatureWriter("PFA0140c,PFA0475c", bcfView);
+
+    StringBuffer fastaBuff = new StringBuffer(">MAL1.embl.gz\n");
+    StringBuffer basesBuff = new StringBuffer();
+    //PFA0140c
+    basesBuff.append("atgagcaatataaatgataataatattcaaaacagcgatgtaaaggaaataaaaaatgat");
+    basesBuff.append("gaatatatgggagaagggtattataatacacataatgaatgtgagggttttgaacaaaac");
+    basesBuff.append("aattatatgaataataatgaaatcaatatggtagatggaaaacatgataatagtgatgat");
+    basesBuff.append("aatataaataattccatgggagggataacacatatgggacatgtgaatgagtataaaaaa");
+    basesBuff.append("ataaaatcattttgtaagttaagaaggaaatttgtatatataaggagaacgggttataat");
+    basesBuff.append("tcatacatatataatagaaagaaaaaaaaaaataaaaataaaatagagactgaaaggaat");
+    basesBuff.append("gtagatgaaatgtataatatgaataataacaataataataatcataacaacaacaacaat");
+    basesBuff.append("aataataataataataataataataataacagatataataataatattaattgtttggat");
+    basesBuff.append("aattttagcgatttatttttaaaatttataaaacaattcattgatcatataaatgtacat");
+    basesBuff.append("ttgaataatgtaaaaaattattatcgaaattatgtgtgtaatgataatatgaaatatgta");
+    basesBuff.append("ttttatttatttattatatatatgttgttaaatattatgattatctttttttcgatgttt");
+    basesBuff.append("gtatatttctttgtatatttttattttatcccacaaaataagtatgtatttcctatagat");
+    basesBuff.append("ttttcattggtaaaaaatcctatagaagattatttacaaaacgaaaaaagatataacatt");
+    basesBuff.append("atgaataaaatgaataatatggacaatatggataatatggataatatgaatcatataaat");
+    basesBuff.append("tatatgaataacatgaatcataataataataataataataataattgtaatataaagaat");
+    basesBuff.append("aattgtaataatattaatatgatgaaaaattttgataagtctaatttcaatgagtcagaa");
+    basesBuff.append("gatttctatataaaatatttcgattctttaaaagaaagcaggaaaagaaatgattattta");
+    basesBuff.append("tataataataaattaaaaggtttttataaagattttcaaaataatattttaagaggtcat");
+    basesBuff.append("atactatttcaaaataaattatattattcagaaaaagaagagttttataagaatttcaat");
+    basesBuff.append("ccttttaattttatatttttttttaagaaaagaacaggaaaagataatttacttaatata");
+    basesBuff.append("aagaaaggatataaaattgatatatttttaaatttttcttatatgaataatgaatataat");
+    basesBuff.append("gacaaatttaattttattcaattagttactgaaatttttaataaaaataataatgtaatg");
+    basesBuff.append("tttagaaatgaaaaattatatatgaataataataattatgaatttataaagaaattacat");
+    basesBuff.append("ttatttttaaatgctcctttttatttttttaatatgtttaataataaaacaaaagaaatt");
+    basesBuff.append("cgattagtacatgattataaatatacgacgaatttttataaaattcaaatatatatatac");
+    basesBuff.append("ccaccgatacaaatacataaagcttctatcgttattcttgtctacgttaattttatatat");
+    basesBuff.append("tattacatgtataattatccttttgtgttcttttatatttttgtttttttcttgagcttc");
+    basesBuff.append("atcttgatatttttcaacactatccttttttttatattgagttgttattattattttaaa");
+    basesBuff.append("aacggattataa");
+    
+    // PFA0475c
+    basesBuff.append("atggaaggacagcataaagaaaaaaatacaaaaataaaaaaaagtaaaaaaccgttagtt");
+    basesBuff.append("gttagtaatagaaaaccattcaacgtttttgaaaaaaaaaaaagtgcaaagccgctcgta");
+    basesBuff.append("agagatcctcgtttttctgatttttcaggatcgttcaatgcgaacttttttagaaatgca");
+    basesBuff.append("tacaagtttttatacgactcaagagaacaagaaaagaagattatagaaaaaaaattaaaa");
+    basesBuff.append("agcaaaaatataacacaagaagaaaaggacgaattaaaaaaaaaatacaatgattataaa");
+    basesBuff.append("agcactgatatattattaaaaaaaaaagaagaagaaaggaaattaaaagcagaattagta");
+    basesBuff.append("aaacaggaaaaacaaaatattctaaccaaaaataaaaaaccttattattatagtgataga");
+    basesBuff.append("aaaattaaaaaaatagttcaagaaaaattgtcgagttataagagtttaaagaaagttata");
+    basesBuff.append("aaaaaagaaaaaaaaacattgcaaaaagagagaaagagaaacatcaaaccaacaaaaaaa");
+    basesBuff.append("aaaatttttttaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+    basesBuff.append("aaaaaaaaaaaaaaaacataa");
+
+    IOUtils.wrapString(basesBuff.toString(), fastaBuff);
+
+    fastaBuff.append(">MAL1_8_16_24h.raw.bcf \n");
+    
+    basesBuff = new StringBuffer();
+    //PFA0140c
+    basesBuff.append("atgagcaatataaatgataataatattcaaaacagcgatgtaaaggaaataaaaaatgat");
+    basesBuff.append("gaatatatgggagaagggtattataatacacataatgaatgtgagggttttgaacaaaac");
+    basesBuff.append("aattatatgaataataatgaaatcaatatggtagatggaaaacatgataatagtgatgat");
+    basesBuff.append("aatataaataattccatgggagggataacacatatgggacatgtgaatgagtataaaaaa");
+    basesBuff.append("ataaaatcattttgtaagttaagaaggaaatttgtatatataaggagaacgggttataat");
+    basesBuff.append("tcatacatatataatagaaagaaaaaaaaaaataaaaataaaatagagactgaaaggaat");
+    basesBuff.append("gtagatgaaatgtataatatgaataataacaataataataatcataacaacaacaacaat");
+    basesBuff.append("aataataataataataataataataataacagatataataataatattaattgtttggat");
+    basesBuff.append("aattttagcgatttatttttaaaatttataaaacaattcattgatcatataaatgtacat");
+    basesBuff.append("ttgaataatgtaaaaaattattatcgaaattatgtgtgtaatgataatatgaaatatgta");
+    basesBuff.append("ttttatttatttattatatatatgttgttaaatattatgattatctttttttcgatgttt");
+    basesBuff.append("gtatatttctttgtatatttttattttatcccacaaaataagtatgtatttcctatagat");
+    basesBuff.append("ttttcattggtaaaaaatcctatagaagattatttacaaaacgaaaaaagatataacatt");
+    basesBuff.append("atgaataaaatgaataatatggacaatatggataatatggataatatgaatcatataaat");
+    basesBuff.append("tatatgaataacatgaatcataataataataataataataataattgtaatataaagaat");
+    basesBuff.append("aattgtaataatattaatatgatgaaaaattttgataagtctaatttcaatgagtcagaa");
+    basesBuff.append("gatttctatataaaatatttcgattctttaaaagaaagcaggaaaagaaatgattattta");
+    basesBuff.append("tataataataaattaaaaggtttttataaagattttcaaaataatattttaagaggtcat");
+    basesBuff.append("atactatttcaaaataaattatattattcagaaaaagaagagttttataagaatttcaat");
+    basesBuff.append("ccttttaattttatatttttttttaagaaaagaacaggaaaagataatttacttaatata");
+    basesBuff.append("aagaaaggatataaaattgatatatttttaaatttttcttatatgaataatgaatataat");
+    basesBuff.append("gacaaatttaattttattcaattagttactgaaatttttaataaaaataataatgtaatg");
+    basesBuff.append("tttagaaatgaaaaattatatatgaataataataattatgaatttataaagaaattacat");
+    basesBuff.append("ttatttttaaatgctcctttttatttttttaatatgtttaataataacacaaaagaaatt");
+    basesBuff.append("cgattagtacatgattataaatatacgacgaatttttataaaattcaaatatatatatac");
+    basesBuff.append("ccaccgatacaaatacataaagcttctatcgttattcttgtctacgttaattttatatat");
+    basesBuff.append("tattacatgtataattatccttttgtgttcttttatatttttgtttttttcttgagcttc");
+    basesBuff.append("atcttgatatttttcaacactatccttttttttatattgagttgttattattattttaaa");
+    basesBuff.append("aacggattataa");
+
+    // PFA0475c
+    basesBuff.append("atggaaggacagcataaagaaaaaaatacaaaaataaaaaaaagtaaaaaaccgttagtt");
+    basesBuff.append("gttagtaatagaaaaccattcaacgtttttgaaaaaaaaaaaagtgcaaagccgctcgta");
+    basesBuff.append("agagatcctcgtttttctgatttttcaggatcgttcaatgcgaacttttttagaaatgca");
+    basesBuff.append("tacaagtttttatacgactcaagagaacaagaaaagaagattatagaaaaaaaattaaaa");
+    basesBuff.append("agcaaaaatataacacaagaagaaaaggacgaattaaaaaaaaaatacaatgattataaa");
+    basesBuff.append("agcactgatatattattaaaaaaaaaagaagaagaaaggaaattaaaagcagaattagta");
+    basesBuff.append("aaacaggaaaaacaaaatattctaaccaaaaataaaaaaccttattattatagtgataga");
+    basesBuff.append("aaaattaaaaaaatagttcaagaaaaattgtcgagtaataagagtttaaagaaagttata");
+    basesBuff.append("aaaaaagaaaaaaaaacattgcaaaaagagagaaagagaaacatcataccaacaaaaaaa");
+    basesBuff.append("aaaatttttttaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
+    basesBuff.append("aaaaaaaaaaaaaaaacataa");
+
+    IOUtils.wrapString(basesBuff.toString(), fastaBuff);
+
+    assertEquals("Export FASTA feature ", writer.toString(), fastaBuff.toString());
+  }
 
   /**
    * Get sequences for a selected region.
@@ -323,12 +433,12 @@ public class WriteVCFTest
    * @param id comma separated list of feature id's
    * @return
    */
-  private StringWriter getFeatureWriter(String ids)
+  private StringWriter getFeatureWriter(String ids, final VCFview view)
   {
     StringWriter writer = new StringWriter();
     String id[] = ids.split(",");
     
-    FeatureVector features = vcfView.getEntryGroup().getAllFeatures();
+    FeatureVector features = view.getEntryGroup().getAllFeatures();
     FeatureVector selectedFeatures = new FeatureVector();
     Feature feature = null;
     for(int i=0; i<features.size(); i++)
@@ -343,20 +453,21 @@ public class WriteVCFTest
       }
     }
     
-    IOUtils.exportFasta(vcfView, selectedFeatures, false, writer);
+    IOUtils.exportFasta(view, selectedFeatures, false, writer);
     return writer;
   }
   
   
   /**
-   * Open a flat file and create the components in the TransferAnnotaionTool
-   * used to control the transfer of annotation.
+   * Load in a VCF and BCF into separate VCFviews to be used 
+   * separately in testing.
    */
-  @Before
-  public void setup()
+  @BeforeClass
+  public static void oneTimeSetUp()
   {
-    final URL ref = WriteVCFTest.class.getResource("/data/test.embl.gz");
-    final URL vcf = WriteVCFTest.class.getResource("/data/test.vcf.gz");
+    // load VCF
+    URL ref = WriteVCFTest.class.getResource("/data/test.embl.gz");
+    URL vcf = WriteVCFTest.class.getResource("/data/test.vcf.gz");
   
     List<String> vcfFileList = new Vector<String>();
     vcfFileList.add(vcf.getFile());
@@ -365,6 +476,17 @@ public class WriteVCFTest
         vcfFileList, 
         5000, 100000000, null, 
         ref.getFile(), null);
+    
+    // load BCF
+    ref = WriteVCFTest.class.getResource("/data/MAL1.embl.gz");
+    vcf = WriteVCFTest.class.getResource("/data/MAL1_8_16_24h.raw.bcf");
+    
+    List<String> bcfFileList = new Vector<String>();
+    bcfFileList.add(vcf.getFile());
+    bcfView = new VCFview(null, new JPanel(), 
+        bcfFileList, 
+        5000, 100000000, null, 
+        ref.getFile(), null);
   }
 
 }
\ No newline at end of file