diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,6 @@
 # Changelog
 
+- V 1.8.0.0: Fixed a bug in the VCF parser that would not accept missing values in QUAL fields (even though the spec explicitly allows for it). This also changed the VCF row structure data type
 - V 1.7.1: Made compatible with latest GHC
 - V 1.7.0: Bumped major version for breaking change (correct mistake from 1.6.7.0). Also correct lower pvp-bounds on hackage to be compatible with LTS-18.28.
 - V 1.6.7.0:
diff --git a/sequence-formats.cabal b/sequence-formats.cabal
--- a/sequence-formats.cabal
+++ b/sequence-formats.cabal
@@ -1,65 +1,95 @@
-name:                sequence-formats
-version:             1.7.1
-synopsis:            A package with basic parsing utilities for several Bioinformatic data formats.
-description:         Contains utilities to parse and write Eigenstrat, Fasta, FreqSum, VCF, Plink and other file formats used in population genetics analyses.
-license:             GPL-3
-license-file:        LICENSE
-author:              Stephan Schiffels
-maintainer:          stephan.schiffels@mac.com
-category:            Bioinformatics
-build-type:          Simple
-cabal-version:       >=1.10
-Homepage:	           https://github.com/stschiff/sequence-formats
-Bug-Reports:         https://github.com/stschiff/sequence-formats/issues
+cabal-version:      >=1.10
+name:               sequence-formats
+version:            1.8.0.0
+license:            GPL-3
+license-file:       LICENSE
+maintainer:         stephan.schiffels@mac.com
+author:             Stephan Schiffels
+homepage:           https://github.com/stschiff/sequence-formats
+bug-reports:        https://github.com/stschiff/sequence-formats/issues
+synopsis:
+    A package with basic parsing utilities for several Bioinformatic data formats.
 
-extra-source-files:  README.md,
-                     Changelog.md,
-                     testDat/example.bim,
-                     testDat/example.bed
-                     testDat/example.eigenstratgeno,
-                     testDat/example.fasta,
-                     testDat/example.freqsum,
-                     testDat/example.histogram.txt,
-                     testDat/example.ind,
-                     testDat/example.snp,
-                     testDat/example.vcf,
-                     testDat/example.pileup
-                     testDat/example.fam
-                     testDat/example.plink.bed
-                     testDat/example.plink.fam
-                     testDat/example.plink.bim
+description:
+    Contains utilities to parse and write Eigenstrat, Fasta, FreqSum, VCF, Plink and other file formats used in population genetics analyses.
 
+category:           Bioinformatics
+build-type:         Simple
+extra-source-files:
+    README.md
+    Changelog.md
+    testDat/example.bim
+    testDat/example.bed
+    testDat/example.eigenstratgeno
+    testDat/example.fasta
+    testDat/example.freqsum
+    testDat/example.histogram.txt
+    testDat/example.ind
+    testDat/example.snp
+    testDat/example.vcf
+    testDat/example.pileup
+    testDat/example.fam
+    testDat/example.plink.bed
+    testDat/example.plink.fam
+    testDat/example.plink.bim
+
 library
-  exposed-modules:     SequenceFormats.RareAlleleHistogram,
-                       SequenceFormats.FreqSum,
-                       SequenceFormats.Fasta,
-                       SequenceFormats.VCF,
-                       SequenceFormats.Eigenstrat,
-                       SequenceFormats.Plink,
-                       SequenceFormats.Utils,
-                       SequenceFormats.Pileup,
-                       SequenceFormats.Bed,
-                       SequenceFormats.Genomic
-  hs-source-dirs:      src
-  build-depends:       base >= 4.7 && < 5, containers, errors, attoparsec, pipes,
-                       transformers, bytestring, lens-family,
-                       pipes-bytestring, foldl, exceptions, pipes-safe,
-                       pipes-attoparsec, vector
-  default-language:    Haskell2010
+    exposed-modules:
+        SequenceFormats.RareAlleleHistogram
+        SequenceFormats.FreqSum
+        SequenceFormats.Fasta
+        SequenceFormats.VCF
+        SequenceFormats.Eigenstrat
+        SequenceFormats.Plink
+        SequenceFormats.Utils
+        SequenceFormats.Pileup
+        SequenceFormats.Bed
+        SequenceFormats.Genomic
 
-Test-Suite sequenceFormatTests
-  type:                exitcode-stdio-1.0
-  main-is:             Spec.hs
-  hs-source-dirs:      test
-  build-depends:       base, sequence-formats, foldl, pipes, pipes-safe, tasty, vector,
-                       transformers, tasty-hunit, bytestring, containers, hspec
-  other-modules:       SequenceFormats.EigenstratSpec,
-                       SequenceFormats.BedSpec,
-                       SequenceFormats.FastaSpec,
-                       SequenceFormats.FreqSumSpec,
-                       SequenceFormats.RareAlleleHistogramSpec,
-                       SequenceFormats.UtilsSpec,
-                       SequenceFormats.PlinkSpec,
-                       SequenceFormats.VCFSpec,
-                       SequenceFormats.PileupSpec
-  default-language:    Haskell2010
+    hs-source-dirs:   src
+    default-language: Haskell2010
+    build-depends:
+        base >=4.7 && <5,
+        containers,
+        errors,
+        attoparsec,
+        pipes,
+        transformers,
+        bytestring,
+        lens-family,
+        pipes-bytestring,
+        foldl,
+        exceptions,
+        pipes-safe,
+        pipes-attoparsec,
+        vector
+
+test-suite sequenceFormatTests
+    type:             exitcode-stdio-1.0
+    main-is:          Spec.hs
+    hs-source-dirs:   test
+    other-modules:
+        SequenceFormats.EigenstratSpec
+        SequenceFormats.BedSpec
+        SequenceFormats.FastaSpec
+        SequenceFormats.FreqSumSpec
+        SequenceFormats.RareAlleleHistogramSpec
+        SequenceFormats.UtilsSpec
+        SequenceFormats.PlinkSpec
+        SequenceFormats.VCFSpec
+        SequenceFormats.PileupSpec
+
+    default-language: Haskell2010
+    build-depends:
+        base,
+        sequence-formats,
+        foldl,
+        pipes,
+        pipes-safe,
+        tasty,
+        vector,
+        transformers,
+        tasty-hunit,
+        bytestring,
+        containers,
+        hspec
diff --git a/src/SequenceFormats/VCF.hs b/src/SequenceFormats/VCF.hs
--- a/src/SequenceFormats/VCF.hs
+++ b/src/SequenceFormats/VCF.hs
@@ -47,7 +47,7 @@
     vcfId :: Maybe B.ByteString, -- ^The SNP ID if non-missing
     vcfRef :: B.ByteString, -- ^ The reference allele (supports also multi-character alleles for Indels)
     vcfAlt :: [B.ByteString], -- ^The alternative alleles, each one possible of multiple characters 
-    vcfQual :: Double, -- ^The quality value
+    vcfQual :: Maybe Double, -- ^The quality value
     vcfFilter :: Maybe B.ByteString, -- ^The Filter value, if non-missing.
     vcfInfo :: [B.ByteString], -- ^A list of Info fields
     vcfFormatString :: [B.ByteString], -- ^A list of format tags
@@ -92,17 +92,18 @@
 vcfEntryParser = vcfEntryParserFull <|> vcfEntryParserTruncated
   where
     vcfEntryParserFull = VCFentry <$> (Chrom <$> word) <* sp <*> A.decimal <* sp <*> parseId <*
-        sp <*> word <* sp <*> parseAlternativeAlleles <* sp <*> A.double <* sp <*> parseFilter <* 
+        sp <*> word <* sp <*> parseAlternativeAlleles <* sp <*> parseQual <* sp <*> parseFilter <* 
         sp <*> parseInfoFields <* sp <*> parseFormatStrings <* sp <*> parseGenotypeInfos <* 
         A.endOfLine
     vcfEntryParserTruncated = VCFentry <$> (Chrom <$> word) <* sp <*> A.decimal <* sp <*> parseId <*
-        sp <*> word <* sp <*> parseAlternativeAlleles <* sp <*> A.double <* sp <*> parseFilter <*
+        sp <*> word <* sp <*> parseAlternativeAlleles <* sp <*> parseQual <* sp <*> parseFilter <*
         sp <*> parseInfoFields <*> pure [] <*> pure [] <* A.endOfLine
     sp = A.satisfy (\c -> c == ' ' || c == '\t')
     parseId = (parseDot *> pure Nothing) <|> (Just <$> word)
     parseDot = A.char '.'
     parseAlternativeAlleles = (parseDot *> pure []) <|> (parseAllele `A.sepBy1` A.char ',')
     parseAllele = A.takeTill (\c -> c == ',' || isSpace c)
+    parseQual = (parseDot *> pure Nothing) <|> (Just <$> A.double)
     parseFilter = (parseDot *> pure Nothing) <|> (Just <$> word)
     parseInfoFields = (parseDot *> pure []) <|> (parseInfoField `A.sepBy1` A.char ';')
     parseInfoField = A.takeTill (\c -> c == ';' || isSpace c)
diff --git a/test/SequenceFormats/VCFSpec.hs b/test/SequenceFormats/VCFSpec.hs
--- a/test/SequenceFormats/VCFSpec.hs
+++ b/test/SequenceFormats/VCFSpec.hs
@@ -36,12 +36,12 @@
         vcfRows !! 6 `shouldBe` vcf7
 
 vcf1 :: VCFentry
-vcf1 = VCFentry (Chrom "1") 10492 (Just "testId") "C" ["T"] 15.0302 Nothing ["DP=28", "PV4=1,1,0.30985,1"]
+vcf1 = VCFentry (Chrom "1") 10492 (Just "testId") "C" ["T"] (Just 15.0302) Nothing ["DP=28", "PV4=1,1,0.30985,1"]
   ["GT", "PL"] [["0/0", "0,3,37"], ["0/0", "0,6,67"], ["0/1", "51,0,28"], ["0/0", "0,54,255"],
   ["0/0", "0,9,83"]]
 
 vcf7 :: VCFentry
-vcf7 = VCFentry (Chrom "2") 30923 Nothing "G" [] 110.112 Nothing ["DP=5", "FQ=-28.9619"]
+vcf7 = VCFentry (Chrom "2") 30923 Nothing "G" [] Nothing Nothing ["DP=5", "FQ=-28.9619"]
   ["GT", "PL"] [["1/1", "0,0,0"], ["1/1", "0,0,0"], ["1/1", "40,6,0"], ["1/1", "105,9,0"], ["1/1", "0,0,0"]]
 
 testGetGenotypes :: Spec
diff --git a/testDat/example.vcf b/testDat/example.vcf
--- a/testDat/example.vcf
+++ b/testDat/example.vcf
@@ -24,4 +24,4 @@
 2	14933	.	G	A	51.2451	.	DP=60.215796;PV4=0.49427,1,1,1	GT:PL	0/0:0,6,39	0/1:25,0,48	0/0:0,18,118	0/1:69,0,163	0/0:0,12,80
 2	16495	.	G	C	7.29715	.	DP=47.27107;AC1=2;PV4=0.540781,0.244272,1,0.0352549	GT:PL	0/0:0,9,9	0/1:23,3,0	0/0:0,4,9	0/1:27,0,46	0/0:0,9,21
 2	20144	.	G	A	15.7039	.	DP=121;AC1=3;PV4=1,1,1,1	GT:PL	0/0:0,5,81	0/1:33,0,47	0/1:9,0,21	0/0:0,182,122	0/1:18,0,27
-2	30923	.	G	.	110.112	.	DP=5;FQ=-28.9619	GT:PL	1/1:0,0,0	1/1:0,0,0	1/1:40,6,0	1/1:105,9,0	1/1:0,0,0
+2	30923	.	G	.	.	.	DP=5;FQ=-28.9619	GT:PL	1/1:0,0,0	1/1:0,0,0	1/1:40,6,0	1/1:105,9,0	1/1:0,0,0
