diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.14.2
+======
+
+ - createCheckpoint now cuts a new events file (bug #74)
+
 0.14.1
 ======
 
diff --git a/acid-state.cabal b/acid-state.cabal
--- a/acid-state.cabal
+++ b/acid-state.cabal
@@ -1,5 +1,5 @@
 Name:                acid-state
-Version:             0.14.1
+Version:             0.14.2
 Synopsis:            Add ACID guarantees to any serializable Haskell data structure.
 Description:         Use regular Haskell data structures as your database and get stronger ACID guarantees than most RDBMS offer.
 Homepage:            http://acid-state.seize.it/
@@ -10,6 +10,7 @@
 Category:            Database
 Build-type:          Simple
 Cabal-version:       >=1.10
+tested-with:         GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1
 Extra-source-files:
         CHANGELOG.md
         examples/*.hs
diff --git a/examples/CheckpointCutsEvent.hs b/examples/CheckpointCutsEvent.hs
new file mode 100644
--- /dev/null
+++ b/examples/CheckpointCutsEvent.hs
@@ -0,0 +1,56 @@
+{-
+This example is mostly just to test that this bug is fixed:
+
+https://github.com/acid-state/acid-state/issues/73
+
+At the end of a run, the checkpoint file should contain a single
+checkpoint and the event file should be empty. The old checkpoints and
+events should be in the Archive directory.
+
+In the Acrhive directory, each checkpoint file should contain one
+checkpoint, and each event file should contain 10 events.
+
+If you comment out the 'createArchive' line below, then the checkpoint
+files should contain 10 checkpoints each.
+
+-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE TemplateHaskell    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+module Main (main) where
+
+-- import           Control.Concurrent
+import           Control.Monad.Reader
+import           Control.Monad.State
+import           Data.Acid
+import           Data.SafeCopy
+import           Data.Typeable
+import           System.Environment
+
+------------------------------------------------------
+-- The Haskell structure that we want to encapsulate
+
+newtype Counter = Counter { unCounter :: Integer }
+    deriving (Show, Typeable)
+
+$(deriveSafeCopy 0 'base ''Counter)
+
+incCounter :: Update Counter Integer
+incCounter =
+  do (Counter c) <- get
+     let c' = succ c
+     put (Counter c')
+     return c'
+
+$(makeAcidic ''Counter ['incCounter])
+
+
+main :: IO ()
+main =
+  do acid <- openLocalState (Counter 0)
+     replicateM_ 10 $ do is <- replicateM 10 (update acid IncCounter)
+                         print is
+                         createCheckpoint acid
+                         createArchive acid
+     closeAcidState acid
diff --git a/src/Data/Acid/Local.hs b/src/Data/Acid/Local.hs
--- a/src/Data/Acid/Local.hs
+++ b/src/Data/Acid/Local.hs
@@ -179,7 +179,8 @@
 --   This call will not return until the operation has succeeded.
 createLocalCheckpoint :: SafeCopy st => LocalState st -> IO ()
 createLocalCheckpoint acidState
-    = do mvar <- newEmptyMVar
+    = do cutFileLog (localEvents acidState)
+         mvar <- newEmptyMVar
          withCoreState (localCore acidState) $ \st ->
            do eventId <- askCurrentEntryId (localEvents acidState)
               pushAction (localEvents acidState) $
