diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs
index fae908f30..754aee29c 100644
--- a/src/Text/Pandoc/Writers/RST.hs
+++ b/src/Text/Pandoc/Writers/RST.hs
@@ -81,7 +81,8 @@ pandocToRST (Pandoc meta blocks) = do
                 (fmap (render colwidth) . blockListToRST)
                 (fmap (trimr . render colwidth) . inlineListToRST)
                 $ deleteMeta "title" $ deleteMeta "subtitle" meta
-  body <- blockListToRST' True $ normalizeHeadings 1 blocks
+  let minLev = findMinHeadingLevel Nothing blocks
+  body <- blockListToRST' True $ normalizeHeadings minLev blocks
   notes <- liftM (reverse . stNotes) get >>= notesToRST
   -- note that the notes may contain refs, so we do them first
   refs <- liftM (reverse . stLinks) get >>= refsToRST
@@ -107,6 +108,11 @@ pandocToRST (Pandoc meta blocks) = do
             headerLtEq _ _ = False
     normalizeHeadings lev (b:bs) = b:normalizeHeadings lev bs
     normalizeHeadings _   []     = []
+    findMinHeadingLevel Nothing (Header l _a _i:bs) = findMinHeadingLevel (Just l) bs
+    findMinHeadingLevel (Just ol) (Header l _a _i:bs) =
+      findMinHeadingLevel (Just $ if ol>l then l else ol) bs
+    findMinHeadingLevel l (_:bs) = findMinHeadingLevel l bs
+    findMinHeadingLevel l [] = fromMaybe 1 l
 
 -- | Return RST representation of reference key table.
 refsToRST :: Refs -> State WriterState Doc
diff --git a/tests/Tests/Writers/RST.hs b/tests/Tests/Writers/RST.hs
index 2a511782f..bb7b2a446 100644
--- a/tests/Tests/Writers/RST.hs
+++ b/tests/Tests/Writers/RST.hs
@@ -75,5 +75,30 @@ tests = [ testGroup "rubrics"
               , ""
               , "Header 2"
               , "--------"]
+          , "minimal heading levels" =:
+              header 2 (text "Header 1") <>
+              header 3 (text "Header 2") <>
+              header 2 (text "Header 1") <>
+              header 4 (text "Header 2") <>
+              header 5 (text "Header 3") <>
+              header 3 (text "Header 2") =?>
+              unlines
+              [ "Header 1"
+              , "--------"
+              , ""
+              , "Header 2"
+              , "~~~~~~~~"
+              , ""
+              , "Header 1"
+              , "--------"
+              , ""
+              , "Header 2"
+              , "~~~~~~~~"
+              , ""
+              , "Header 3"
+              , "^^^^^^^^"
+              , ""
+              , "Header 2"
+              , "~~~~~~~~"]
           ]
         ]