diff --git a/libasterix.cabal b/libasterix.cabal
--- a/libasterix.cabal
+++ b/libasterix.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               libasterix
-version:            0.17.1
+version:            0.17.2
 synopsis:           Asterix data processing library
 description:
     This library provides features to process asterix data format, including
diff --git a/src/Asterix/Base.hs b/src/Asterix/Base.hs
--- a/src/Asterix/Base.hs
+++ b/src/Asterix/Base.hs
@@ -572,7 +572,12 @@
             | otherwise = (a+1) * 7
     when (n == 0) $ parsingError "empty fspec"
     case pm of
-        StrictParsing  -> when (n > maxSize) $ parsingError "fspec too big"
+        StrictParsing  -> do
+            -- check max size
+            when (n > maxSize) $ parsingError "fspec too big"
+            -- check trailing bits, expect all zero
+            when (or $ drop definedItems result) $
+                parsingError "unexpected fspec bit set"
         PartialParsing -> pure ()
     pure $ Fspec $ take definedItems result
   where
diff --git a/test/TestAsterix.hs b/test/TestAsterix.hs
--- a/test/TestAsterix.hs
+++ b/test/TestAsterix.hs
@@ -61,6 +61,7 @@
     , testCase "testExplicit3b" testExplicit3b
     , testCase "testExplicit3c" testExplicit3c
     , testCase "testCompound0" testCompound0
+    , testCase "testCompoundFspecError" testCompoundFspecError
     , testCase "testCompound1" testCompound1
     , testCase "testCompoundSet" testCompoundSet
     , testCase "testCompoundDel" testCompoundDel
@@ -631,6 +632,18 @@
         act = parseNonSpare (schema @(RecordOf Cat_000_1_0 ~> "091") Proxy)
         result = parse @StrictParsing act bs
     assertEqual "result" True (isLeft result)
+
+testCompoundFspecError :: Assertion
+testCompoundFspecError = do
+    let -- error: fspec bit is set between 'I1' and 'I2'
+        bs1 = fromJust $ unhexlify "c01122"
+        -- error: fspec bit is set between 'I1' and 'I2'
+        bs2 = fromJust $ unhexlify "a21122"
+        act = parseNonSpare (schema @(RecordOf Cat_000_1_0 ~> "092") Proxy)
+        result1 = parse @StrictParsing act bs1
+        result2 = parse @StrictParsing act bs2
+    assertEqual "result1" True (isLeft result1)
+    assertEqual "result2" True (isLeft result2)
 
 testCompound1 :: Assertion
 testCompound1 = do
