diff --git a/Fingerprint.hs b/Fingerprint.hs
--- a/Fingerprint.hs
+++ b/Fingerprint.hs
@@ -1,5 +1,6 @@
 module Fingerprint (
-    fingerprints
+    Fingerprints
+  , fingerprints
   ) where
 
 import Data.Char (ord)
@@ -14,6 +15,7 @@
 import qualified Fingerprint.BOOL as BOOL
 import qualified Fingerprint.CPLI as CPLI
 import qualified Fingerprint.FIXP as FIXP
+import qualified Fingerprint.HRTI as HRTI
 import qualified Fingerprint.MODE as MODE
 import qualified Fingerprint.MODU as MODU
 import qualified Fingerprint.NULL as NULL
@@ -40,6 +42,7 @@
   , (BOOL.name, BOOL.semantics)
   , (CPLI.name, CPLI.semantics)
   , (FIXP.name, FIXP.semantics)
+  , (HRTI.name, HRTI.semantics)
   , (MODE.name, MODE.semantics)
   , (MODU.name, MODU.semantics)
   , (NULL.name, NULL.semantics)
diff --git a/Fingerprint/HRTI.hs b/Fingerprint/HRTI.hs
new file mode 100644
--- /dev/null
+++ b/Fingerprint/HRTI.hs
@@ -0,0 +1,64 @@
+module Fingerprint.HRTI (
+    name
+  , semantics
+  ) where
+
+import Control.Monad.State.Strict
+
+import System.Time
+
+import Env
+import Instruction
+import Ip
+
+-----------------------------------------------------------
+
+name :: String
+name = "HRTI"
+
+semantics :: (I i) => [(Char, Instruction i ())]
+semantics = [
+    ('G', gInstr)
+  , ('M', mInstr)
+  , ('T', tInstr)
+  , ('E', eInstr)
+  , ('S', sInstr)
+  ]
+
+ten6 :: Integer
+ten6 = 10 ^ (6 :: Integer)
+
+diffMicro :: (I i) => ClockTime -> ClockTime -> i
+diffMicro x = fromInteger . (`div` ten6) . tdPicosec . diffClockTimes x
+
+gInstr :: (I i) => Instruction i ()
+gInstr = do
+  t <- liftIO $ do
+    _ <- getClockTime
+    x <- getClockTime
+    y <- getClockTime
+    return $ diffMicro y x
+  pushInstr t
+
+mInstr :: (I i) => Instruction i ()
+mInstr = do
+  t <- liftIO getClockTime
+  modify $ withIp $ \ip -> ip { hrtiMark = Just t }
+
+tInstr :: (I i) => Instruction i ()
+tInstr = do
+  ip <- gets currentIp
+  case hrtiMark ip of
+    Nothing -> reverseInstr
+    Just t -> do
+      t' <- liftIO getClockTime
+      pushInstr $ diffMicro t' t
+
+eInstr :: (I i) => Instruction i ()
+eInstr = modify $ withIp $ \ip -> ip { hrtiMark = Nothing }
+
+sInstr :: (I i) => Instruction i ()
+sInstr = do
+  pico <- liftIO $ liftM ctPicosec $ getClockTime >>= toCalendarTime
+  pushInstr $ fromInteger $ pico `div` ten6
+
diff --git a/Fungi.cabal b/Fungi.cabal
--- a/Fungi.cabal
+++ b/Fungi.cabal
@@ -7,7 +7,7 @@
 -- The package version. See the Haskell package versioning policy
 -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for
 -- standards guiding when and how versions should be incremented.
-Version:             	1.0.1
+Version:             	1.0.2
 
 -- A short (one-line) description of the package.
 Synopsis:            	An interpreter for Funge-98 programming languages, including Befunge.
@@ -60,48 +60,49 @@
   
 -- Modules not exported by this package.
 Other-modules:
-	  Data.ByteSize
-	, Data.Deque
-	, Data.History
-	, Data.I
-	, Data.IntegralLike
-	, Data.Labeled
-	, Data.LogicalBits
-	, Data.MaybeBounded
-	, Data.Stack
-	, Data.Vector
-	, Debug.Debug
-	, Debug.Debugger
-	, Env
-	, Fingerprint
-	, Fingerprint.BASE
-	, Fingerprint.BOOL
-	, Fingerprint.CPLI
-	, Fingerprint.FIXP
-	, Fingerprint.MODE
-	, Fingerprint.MODU
-	, Fingerprint.NULL
-	, Fingerprint.ORTH
-	, Fingerprint.REFC
-	, Fingerprint.ROMA
-	, Fungi
-	, Instruction
-	, Interpreter
-	, Ip
-	, Math
-	, Mode
-	, ProcessArgs
-	, Random
-	, Semantics
-	, Space.Cell
-	, Space.Space
-	, System.IO.Buffering
-	, Text.Help.Debug
-	, Text.Help.Fungi
-	, Text.PrettyShow
-	, Text.PrintOption
-	, UnknownInstruction
-	, Version
+	Data.ByteSize
+	Data.Deque
+	Data.History
+	Data.I
+	Data.IntegralLike
+	Data.Labeled
+	Data.LogicalBits
+	Data.MaybeBounded
+	Data.Stack
+	Data.Vector
+	Debug.Debug
+	Debug.Debugger
+	Env
+	Fingerprint
+	Fingerprint.BASE
+	Fingerprint.BOOL
+	Fingerprint.CPLI
+	Fingerprint.FIXP
+	Fingerprint.HRTI
+	Fingerprint.MODE
+	Fingerprint.MODU
+	Fingerprint.NULL
+	Fingerprint.ORTH
+	Fingerprint.REFC
+	Fingerprint.ROMA
+	Fungi
+	Instruction
+	Interpreter
+	Ip
+	Math
+	Mode
+	ProcessArgs
+	Random
+	Semantics
+	Space.Cell
+	Space.Space
+	System.IO.Buffering
+	Text.Help.Debug
+	Text.Help.Fungi
+	Text.PrettyShow
+	Text.PrintOption
+	UnknownInstruction
+	Version
   
 -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.
 -- Build-tools:         
diff --git a/Ip.hs b/Ip.hs
--- a/Ip.hs
+++ b/Ip.hs
@@ -9,7 +9,9 @@
   , isAlive
   , getStorageOffset
   , getSemantics
+  , hrtiMark
 
+
   , testMode
   , addMode
   , removeMode
@@ -34,6 +36,8 @@
 import Data.Stack
 import Data.Vector
 
+import System.Time (ClockTime)
+
 import Text.PrettyShow
 
 import Mode
@@ -52,6 +56,7 @@
   , getStorageOffset :: !(Vector i)
   , getSemantics :: Semantics env i
   , modes :: Set Mode
+  , hrtiMark :: Maybe ClockTime
   }
 
 instance (PrettyShow i) => PrettyShow (Ip env i) where
@@ -78,6 +83,7 @@
   , getStorageOffset = takeV dim 0
   , getSemantics = mkSemantics baseSemantics
   , modes = Set.empty
+  , hrtiMark = Nothing
   }
 
 testMode :: Mode -> Ip env i -> Bool
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -1,4 +1,5 @@
 module Main (
+    main
   )
   where
 
diff --git a/Text/Help/Fungi.hs b/Text/Help/Fungi.hs
--- a/Text/Help/Fungi.hs
+++ b/Text/Help/Fungi.hs
@@ -3,9 +3,10 @@
   ) where
 
 import Data.ByteSize (byteSize)
-import Data.Char (toLower)
+import Data.Char (chr, toLower)
 import Data.Int
 import Data.List (sort, intercalate, nub)
+import qualified Data.Map as Map
 import Data.Maybe (fromMaybe)
 
 import System.Environment (getProgName)
@@ -13,6 +14,8 @@
 
 import Text.PrintOption
 
+import Fingerprint
+
 -----------------------------------------------------------
 
 p :: Char -> String -> String -> IO ()
@@ -31,19 +34,14 @@
   , byteSize (0 :: Int64)
   ]
 
-fingerprints :: String
-fingerprints = intercalate ", " $ sort [
-    "BASE"
-  , "BOOL"
-  , "CPLI"
-  , "FIXP"
-  , "MODE"
-  , "MODU"
-  , "NULL"
-  , "ORTH"
-  , "REFC"
-  , "ROMA"
-  ]
+fingers :: String
+fingers = intercalate ", " $ sort $ map (reverse . decode) $ Map.keys (fingerprints :: Fingerprints Integer)
+  where
+    decode x = if x == 0
+      then ""
+      else chr (fromInteger m) : decode d
+      where
+        (d, m) = x `divMod` 256
 
 line :: IO ()
 line = putStrLn $ replicate 80 '-'
@@ -85,6 +83,6 @@
     , "\nDefault is reverse."
     ]
   line
-  p ' ' "FINGERPRINTS--" fingerprints
+  p ' ' "FINGERPRINTS--" fingers
   line
 
diff --git a/Version.hs b/Version.hs
--- a/Version.hs
+++ b/Version.hs
@@ -9,5 +9,5 @@
 handprint = 378447798
 
 version :: String
-version = "1.0.1"
+version = "1.0.2"
 
