diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,18 +1,22 @@
 User-visible changes in hledger-ui.
 See also the hledger changelog.
 
+# 1.18 2020-06-07
+
+- builds with hledger 1.18
+
 # 1.17.1.1 2020-03-19
 
 - update bounds after some belated hledger-* version bumps
 
 # 1.17.1 2020-03-19
 
-- ui: fix a regression, empty register of depth-limited account (fix #1208)
+- fix a regression, empty register of depth-limited account (fix #1208)
 
 - require newer Decimal, math-functions libs to ensure consistent
   rounding behaviour, even when built with old GHCs/snapshots. 
   hledger uses banker's rounding (rounds to nearest even number, eg
-  0.5 with with zero decimal places is "0").
+  0.5 displayed with zero decimal places is "0").
 
 # 1.17 2020-03-01
 
diff --git a/Hledger/UI/AccountsScreen.hs b/Hledger/UI/AccountsScreen.hs
--- a/Hledger/UI/AccountsScreen.hs
+++ b/Hledger/UI/AccountsScreen.hs
@@ -86,8 +86,8 @@
     q = And [queryFromOpts d ropts, excludeforecastq (forecast_ ropts)]
       where
         -- Except in forecast mode, exclude future/forecast transactions.
-        excludeforecastq True = Any
-        excludeforecastq False =  -- not:date:tomorrow- not:tag:generated-transaction
+        excludeforecastq (Just _) = Any
+        excludeforecastq Nothing  =  -- not:date:tomorrow- not:tag:generated-transaction
           And [
              Not (Date $ DateSpan (Just $ addDays 1 d) Nothing)
             ,Not (Tag "generated-transaction" Nothing)
@@ -218,7 +218,7 @@
               ,("-+", str "depth")
               ,("T", renderToggle (tree_ ropts) "flat" "tree")
               ,("H", renderToggle (not ishistorical) "end-bals" "changes")
-              ,("F", renderToggle1 (forecast_ ropts) "forecast")
+              ,("F", renderToggle1 (isJust $ forecast_ ropts) "forecast")
               --,("/", "filter")
               --,("DEL", "unfilter")
               --,("ESC", "cancel/top")
@@ -339,7 +339,7 @@
         VtyEvent (EvKey (KChar 'U') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
         VtyEvent (EvKey (KChar 'P') []) -> asCenterAndContinue $ regenerateScreens j d $ togglePending ui
         VtyEvent (EvKey (KChar 'C') []) -> asCenterAndContinue $ regenerateScreens j d $ toggleCleared ui
-        VtyEvent (EvKey (KChar 'F') []) -> continue $ regenerateScreens j d $ toggleForecast ui
+        VtyEvent (EvKey (KChar 'F') []) -> continue $ regenerateScreens j d $ toggleForecast d ui
 
         VtyEvent (EvKey (KDown)     [MShift]) -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui
         VtyEvent (EvKey (KUp)       [MShift]) -> continue $ regenerateScreens j d $ growReportPeriod d ui
diff --git a/Hledger/UI/Main.hs b/Hledger/UI/Main.hs
--- a/Hledger/UI/Main.hs
+++ b/Hledger/UI/Main.hs
@@ -66,7 +66,7 @@
 
   -- always include forecasted periodic transactions when loading data;
   -- they will be toggled on and off in the UI.
-  let copts' = copts{reportopts_=ropts{forecast_=True}}
+  let copts' = copts{reportopts_=ropts{forecast_=Just $ fromMaybe nulldatespan (forecast_ ropts)}}
 
   case True of
     _ | "help"            `inRawOpts` rawopts -> putStr (showModeUsage uimode)
diff --git a/Hledger/UI/RegisterScreen.hs b/Hledger/UI/RegisterScreen.hs
--- a/Hledger/UI/RegisterScreen.hs
+++ b/Hledger/UI/RegisterScreen.hs
@@ -72,15 +72,15 @@
     q = And [queryFromOpts d ropts', excludeforecastq (forecast_ ropts)]
       where
         -- Except in forecast mode, exclude future/forecast transactions.
-        excludeforecastq True = Any
-        excludeforecastq False =  -- not:date:tomorrow- not:tag:generated-transaction
+        excludeforecastq (Just _) = Any
+        excludeforecastq Nothing  =  -- not:date:tomorrow- not:tag:generated-transaction
           And [
              Not (Date $ DateSpan (Just $ addDays 1 d) Nothing)
             ,Not (Tag "generated-transaction" Nothing)
           ]
 
     (_label,items) = accountTransactionsReport ropts' j q thisacctq
-    items' = (if empty_ ropts' then id else filter (not . isZeroMixedAmount . fifth6)) $  -- without --empty, exclude no-change txns
+    items' = (if empty_ ropts' then id else filter (not . mixedAmountLooksZero . fifth6)) $  -- without --empty, exclude no-change txns
              reverse  -- most recent last
              items
 
@@ -237,7 +237,7 @@
 --              ,("RIGHT", str "transaction")
               ,("T", renderToggle (tree_ ropts) "flat(-subs)" "tree(+subs)") -- rsForceInclusive may override, but use tree_ to ensure a visible toggle effect
               ,("H", renderToggle (not ishistorical) "historical" "period")
-              ,("F", renderToggle1 (forecast_ ropts) "forecast")
+              ,("F", renderToggle1 (isJust $ forecast_ ropts) "forecast")
 --               ,("a", "add")
 --               ,("g", "reload")
 --               ,("q", "quit")
@@ -336,7 +336,7 @@
         VtyEvent (EvKey (KChar 'U') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleUnmarked ui
         VtyEvent (EvKey (KChar 'P') []) -> rsCenterAndContinue $ regenerateScreens j d $ togglePending ui
         VtyEvent (EvKey (KChar 'C') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleCleared ui
-        VtyEvent (EvKey (KChar 'F') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleForecast ui
+        VtyEvent (EvKey (KChar 'F') []) -> rsCenterAndContinue $ regenerateScreens j d $ toggleForecast d ui
 
         VtyEvent (EvKey (KChar '/') []) -> continue $ regenerateScreens j d $ showMinibuffer ui
         VtyEvent (EvKey (KDown)     [MShift]) -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui
diff --git a/Hledger/UI/UIState.hs b/Hledger/UI/UIState.hs
--- a/Hledger/UI/UIState.hs
+++ b/Hledger/UI/UIState.hs
@@ -164,11 +164,15 @@
 -- overkill, probably we should just hide/show the periodic
 -- transactions with a query for their special tag.
 --
-toggleForecast :: UIState -> UIState
-toggleForecast ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
+toggleForecast :: Day -> UIState -> UIState
+toggleForecast d ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
   ui{aopts=uopts{cliopts_=copts'}}
   where
-    copts' = copts{reportopts_=ropts{forecast_=not $ forecast_ ropts}}
+    copts' = copts{reportopts_=ropts{forecast_=forecast'}}
+    forecast' =
+      case forecast_ ropts of
+        Just _  -> Nothing
+        Nothing -> forecastPeriodFromRawOpts d $ rawopts_ copts
 
 -- | Toggle between showing all and showing only real (non-virtual) items.
 toggleReal :: UIState -> UIState
diff --git a/README b/README
deleted file mode 100644
--- a/README
+++ /dev/null
@@ -1,45 +0,0 @@
-A curses-style text user interface for the hledger accounting tool.
-
-hledger-ui is the new name for hledger-vty. Revived in 2015, this
-package is intended to be installed as standard by all hledger users,
-except those on (native) Windows, where it is not supported.
-
-hledger-ui currently allows browsing the balance, register and print
-reports, with drill-down and scrolling.
-
-
-# HACKING
-
-## Backlog:
-```
-reg: show historical running balance
-acc: fix -H, show historical balances
- switch to multibalance report ?
-adjust filter
- accounts screen
- register screen
-reg: improve other account names
- test showing only real postings when there are reals and virtuals
-journal entry view dialog
-blog
-reg: support -V
-redraw on ctrl-l/cmd-r
- reload on redraw
- reload on screen change
- reload on file change
-acc: show total
-fix --drop
-show "modified account names" with --drop or --alias
-journal screen
-bs/is/cf-ish reports
-persistent custom reports
-persistent config
-search in page
-adjust other options
-add
-edit
-custom screens
-plugin screens
-
-
-```
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,9 @@
+# hledger-ui
+
+A simple curses-style text user interface for the hledger accounting system.
+It can be a more convenient way to browse your accounts than the CLI.
+This package currently does not support Microsoft Windows, except in WSL.
+
+See also:
+the [project README](https://hledger.org/README.html)
+and [home page](https://hledger.org).
diff --git a/hledger-ui.1 b/hledger-ui.1
--- a/hledger-ui.1
+++ b/hledger-ui.1
@@ -1,5 +1,5 @@
 
-.TH "hledger-ui" "1" "March 2020" "hledger-ui 1.17.1.1" "hledger User Manuals"
+.TH "hledger-ui" "1" "June 2020" "hledger-ui 1.18" "hledger User Manuals"
 
 
 
diff --git a/hledger-ui.cabal b/hledger-ui.cabal
--- a/hledger-ui.cabal
+++ b/hledger-ui.cabal
@@ -1,24 +1,24 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.2.
+-- This file has been generated from package.yaml by hpack version 0.33.0.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 22506ce2642fc6b4c1cca0261151117f16a150751b27630d0952cdafbc8f80ad
+-- hash: 315b95d3ecfb2c8ff5debfcbcd2d1ef92989941f0cdfec48b8c39a4535a8228a
 
 name:           hledger-ui
-version:        1.17.1.1
-synopsis:       Terminal user interface for the hledger accounting tool
-description:    This is hledger's terminal interface.
-                It is simpler and more convenient for browsing data than the command-line interface,
-                but lighter and faster than hledger-web.
+version:        1.18
+synopsis:       Curses-style terminal interface for the hledger accounting system
+description:    A simple curses-style terminal user interface for the hledger accounting system.
+                It can be a more convenient way to browse your accounts than the CLI.
+                This package currently does not support Microsoft Windows, except in WSL.
                 .
-                hledger is a cross-platform program for tracking money, time, or
-                any other commodity, using double-entry accounting and a simple,
-                editable file format. It is inspired by and largely compatible
-                with ledger(1).  hledger provides command-line, terminal and web
-                interfaces, and aims to be a reliable, practical tool for daily
-                use.
+                hledger is a robust, cross-platform set of tools for tracking money,
+                time, or any other commodity, using double-entry accounting and a
+                simple, editable file format, with command-line, terminal and web
+                interfaces. It is a Haskell rewrite of Ledger, and one of the leading
+                implementations of Plain Text Accounting. Read more at:
+                <https://hledger.org>
 category:       Finance, Console
 stability:      stable
 homepage:       http://hledger.org
@@ -27,11 +27,11 @@
 maintainer:     Simon Michael <simon@joyful.com>
 license:        GPL-3
 license-file:   LICENSE
-tested-with:    GHC==8.0.2, GHC==8.2.2, GHC==8.4.3, GHC==8.6.5, GHC==8.8.2, GHC==8.10
+tested-with:    GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.5, GHC==8.8.3, GHC==8.10.0.20200123
 build-type:     Simple
 extra-source-files:
     CHANGES.md
-    README
+    README.md
     hledger-ui.1
     hledger-ui.txt
     hledger-ui.info
@@ -64,7 +64,7 @@
   hs-source-dirs:
       ./.
   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans
-  cpp-options: -DVERSION="1.17.1.1"
+  cpp-options: -DVERSION="1.18"
   build-depends:
       ansi-terminal >=0.6.2.3
     , async
@@ -77,8 +77,8 @@
     , extra >=1.6.3
     , filepath
     , fsnotify >=0.2.1.2 && <0.4
-    , hledger >=1.17.1.1 && <1.18
-    , hledger-lib >=1.17.1 && <1.18
+    , hledger >=1.18 && <1.19
+    , hledger-lib >=1.18 && <1.19
     , megaparsec >=7.0.0 && <8.1
     , microlens >=0.4
     , microlens-platform >=0.2.3.1
diff --git a/hledger-ui.info b/hledger-ui.info
--- a/hledger-ui.info
+++ b/hledger-ui.info
@@ -3,8 +3,8 @@
 
 File: hledger-ui.info,  Node: Top,  Next: OPTIONS,  Up: (dir)
 
-hledger-ui(1) hledger-ui 1.17.1.1
-*********************************
+hledger-ui(1) hledger-ui 1.18
+*****************************
 
 hledger-ui - terminal interface for the hledger accounting tool
 
@@ -499,26 +499,26 @@
 
 Tag Table:
 Node: Top71
-Node: OPTIONS1478
-Ref: #options1575
-Node: KEYS5006
-Ref: #keys5101
-Node: SCREENS9377
-Ref: #screens9482
-Node: Accounts screen9572
-Ref: #accounts-screen9700
-Node: Register screen11916
-Ref: #register-screen12071
-Node: Transaction screen14068
-Ref: #transaction-screen14226
-Node: Error screen15096
-Ref: #error-screen15218
-Node: ENVIRONMENT15462
-Ref: #environment15576
-Node: FILES16383
-Ref: #files16482
-Node: BUGS16695
-Ref: #bugs16772
+Node: OPTIONS1470
+Ref: #options1567
+Node: KEYS4998
+Ref: #keys5093
+Node: SCREENS9369
+Ref: #screens9474
+Node: Accounts screen9564
+Ref: #accounts-screen9692
+Node: Register screen11908
+Ref: #register-screen12063
+Node: Transaction screen14060
+Ref: #transaction-screen14218
+Node: Error screen15088
+Ref: #error-screen15210
+Node: ENVIRONMENT15454
+Ref: #environment15568
+Node: FILES16375
+Ref: #files16474
+Node: BUGS16687
+Ref: #bugs16764
 
 End Tag Table
 
diff --git a/hledger-ui.txt b/hledger-ui.txt
--- a/hledger-ui.txt
+++ b/hledger-ui.txt
@@ -441,4 +441,4 @@
 
 
 
-hledger-ui 1.17.1.1               March 2020                     hledger-ui(1)
+hledger-ui 1.18                    June 2020                     hledger-ui(1)
