diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,20 @@
 User-visible changes in the hledger command line tool and library.
 
 
+# 1.17.1 2020-03-18
+
+- csv: amount1 no longer forces a second posting or second posting amount.
+  The "special handling for pre 1.17 rules" should now be less
+  noticeable. amount1/amount2 no longer force a second posting or
+  explicit amounts on both postings. (Only amount/amount-in/amount-out
+  do that.) Error messages and handling of corner cases may be more
+  robust, also.
+
+- journal: a commodity directive without decimal mark now gives a more
+  verbose error message with examples
+
+- journal: inclusive balance assignments now work (#1207)
+
 # 1.17 2020-03-01
 
 ## General
diff --git a/Hledger/Cli/CliOptions.hs b/Hledger/Cli/CliOptions.hs
--- a/Hledger/Cli/CliOptions.hs
+++ b/Hledger/Cli/CliOptions.hs
@@ -73,6 +73,7 @@
 import Control.Monad (when)
 import Data.Char
 import Data.Default
+import Data.Either (isRight)
 import Data.Functor.Identity (Identity)
 import "base-compat-batteries" Data.List.Compat
 import Data.List.Extra (nubSort)
diff --git a/Hledger/Cli/Commands/Add.hs b/Hledger/Cli/Commands/Add.hs
--- a/Hledger/Cli/Commands/Add.hs
+++ b/Hledger/Cli/Commands/Add.hs
@@ -23,6 +23,7 @@
 import Control.Monad.State.Strict (evalState, evalStateT)
 import Control.Monad.Trans (liftIO)
 import Data.Char (toUpper, toLower)
+import Data.Either (isRight)
 import Data.Functor.Identity (Identity(..))
 import "base-compat-batteries" Data.List.Compat
 import qualified Data.Set as S
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -99,15 +99,23 @@
 
 [![license](https://img.shields.io/badge/license-GPLv3+-brightgreen.svg)](http://www.gnu.org/licenses/gpl.html)
 
-[![OpenCollective](https://opencollective.com/hledger/backers/badge.svg)](#backers)
-[![OpenCollective](https://opencollective.com/hledger/sponsors/badge.svg)](#sponsors)
-[![bountysource](https://api.bountysource.com/badge/team?team_id=75979&style=bounties_received)](https://github.com/simonmichael/hledger/issues?q=label:bounty)
-[![github issues](https://img.shields.io/github/issues/simonmichael/hledger.svg)](http://bugs.hledger.org)
+[![hledger CI](https://github.com/simonmichael/hledger/workflows/hledger%20CI/badge.svg)](https://github.com/simonmichael/hledger/actions)
+<!-- [![Build Status](https://travis-ci.org/simonmichael/hledger.svg?branch=master)](https://travis-ci.org/simonmichael/hledger/builds) -->
+<!-- [![Build Status](https://ci.appveyor.com/api/projects/status/5vejw0w5n5igdr42?svg=true)](https://ci.appveyor.com/project/simonmichael/hledger/history) -->
 
 [![on hackage](https://img.shields.io/hackage/v/hledger.svg?label=hackage&colorB=green)](http://hackage.haskell.org/package/hledger)
-[![on stackage nightly](http://stackage.org/package/hledger/badge/nightly)](http://stackage.org/nightly/package/hledger)
-[![on stackage lts](http://stackage.org/package/hledger/badge/lts)](http://stackage.org/lts/package/hledger)
-[![on stackage lts 7](http://stackage.org/package/hledger/badge/lts-7)](http://stackage.org/lts-7/package/hledger)
+<br>
+[![](https://img.shields.io/hackage-deps/v/hledger-lib.svg?label=hledger-lib+bounds)](http://packdeps.haskellers.com/feed?needle=hledger-lib)
+[![](https://img.shields.io/hackage-deps/v/hledger.svg?label=hledger+bounds)](http://packdeps.haskellers.com/feed?needle=hledger)
+<br>
+[![](https://img.shields.io/hackage-deps/v/hledger-ui.svg?label=hledger-ui+bounds)](http://packdeps.haskellers.com/feed?needle=hledger-ui)
+[![](https://img.shields.io/hackage-deps/v/hledger-web.svg?label=hledger-web+bounds)](http://packdeps.haskellers.com/feed?needle=hledger-web)
+
+[![](https://repology.org/badge/version-for-repo/stackage_lts/hledger.svg)](https://repology.org/metapackage/hledger)
+[![](https://repology.org/badge/version-for-repo/stackage_nighly/hledger.svg)](https://repology.org/metapackage/hledger)
+<!-- [![on stackage lts](http://stackage.org/package/hledger/badge/lts)](http://stackage.org/lts/package/hledger) -->
+<!-- [![on stackage nightly](http://stackage.org/package/hledger/badge/nightly)](http://stackage.org/nightly/package/hledger) -->
+
 <!-- [![github
 release](https://img.shields.io/github/release/simonmichael/hledger.svg?label=github+release)](https://github.com/simonmichael/hledger/releases)
 --> <!-- [![github latest release
@@ -115,9 +123,7 @@
 --> <!-- [![gratipay](https://img.shields.io/gratipay/hledger.svg)]()
 -->
 
-[![Build Status](https://travis-ci.org/simonmichael/hledger.svg?branch=master)](https://travis-ci.org/simonmichael/hledger/builds)
-[![Build Status](https://ci.appveyor.com/api/projects/status/5vejw0w5n5igdr42?svg=true)](https://ci.appveyor.com/project/simonmichael/hledger/history)
-[![](https://img.shields.io/hackage-deps/v/hledger-lib.svg?label=hledger-lib+bounds)](http://packdeps.haskellers.com/feed?needle=hledger-lib)
-[![](https://img.shields.io/hackage-deps/v/hledger.svg?label=hledger+bounds)](http://packdeps.haskellers.com/feed?needle=hledger)
-[![](https://img.shields.io/hackage-deps/v/hledger-ui.svg?label=hledger-ui+bounds)](http://packdeps.haskellers.com/feed?needle=hledger-ui)
-[![](https://img.shields.io/hackage-deps/v/hledger-web.svg?label=hledger-web+bounds)](http://packdeps.haskellers.com/feed?needle=hledger-web)
+[![OpenCollective](https://opencollective.com/hledger/backers/badge.svg)](#backers)
+[![OpenCollective](https://opencollective.com/hledger/sponsors/badge.svg)](#sponsors)
+[![bountysource](https://api.bountysource.com/badge/team?team_id=75979&style=bounties_received)](https://github.com/simonmichael/hledger/issues?q=label:bounty)
+[![github issues](https://img.shields.io/github/issues/simonmichael/hledger.svg)](http://bugs.hledger.org)
diff --git a/embeddedfiles/hledger-ui.1 b/embeddedfiles/hledger-ui.1
--- a/embeddedfiles/hledger-ui.1
+++ b/embeddedfiles/hledger-ui.1
@@ -1,5 +1,5 @@
 
-.TH "hledger-ui" "1" "March 2020" "hledger-ui 1.17" "hledger User Manuals"
+.TH "hledger-ui" "1" "March 2020" "hledger-ui 1.17.1" "hledger User Manuals"
 
 
 
diff --git a/embeddedfiles/hledger-ui.info b/embeddedfiles/hledger-ui.info
--- a/embeddedfiles/hledger-ui.info
+++ b/embeddedfiles/hledger-ui.info
@@ -3,8 +3,8 @@
 
 File: hledger-ui.info,  Node: Top,  Next: OPTIONS,  Up: (dir)
 
-hledger-ui(1) hledger-ui 1.17
-*****************************
+hledger-ui(1) hledger-ui 1.17.1
+*******************************
 
 hledger-ui - terminal interface for the hledger accounting tool
 
@@ -499,26 +499,26 @@
 
 Tag Table:
 Node: Top71
-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
+Node: OPTIONS1474
+Ref: #options1571
+Node: KEYS5002
+Ref: #keys5097
+Node: SCREENS9373
+Ref: #screens9478
+Node: Accounts screen9568
+Ref: #accounts-screen9696
+Node: Register screen11912
+Ref: #register-screen12067
+Node: Transaction screen14064
+Ref: #transaction-screen14222
+Node: Error screen15092
+Ref: #error-screen15214
+Node: ENVIRONMENT15458
+Ref: #environment15572
+Node: FILES16379
+Ref: #files16478
+Node: BUGS16691
+Ref: #bugs16768
 
 End Tag Table
 
diff --git a/embeddedfiles/hledger-ui.txt b/embeddedfiles/hledger-ui.txt
--- a/embeddedfiles/hledger-ui.txt
+++ b/embeddedfiles/hledger-ui.txt
@@ -441,4 +441,4 @@
 
 
 
-hledger-ui 1.17                   March 2020                     hledger-ui(1)
+hledger-ui 1.17.1                 March 2020                     hledger-ui(1)
diff --git a/embeddedfiles/hledger.1 b/embeddedfiles/hledger.1
--- a/embeddedfiles/hledger.1
+++ b/embeddedfiles/hledger.1
@@ -1,6 +1,6 @@
 .\"t
 
-.TH "hledger" "1" "March 2020" "hledger 1.17" "hledger User Manuals"
+.TH "hledger" "1" "March 2020" "hledger 1.17.1" "hledger User Manuals"
 
 
 
diff --git a/embeddedfiles/hledger.info b/embeddedfiles/hledger.info
--- a/embeddedfiles/hledger.info
+++ b/embeddedfiles/hledger.info
@@ -3,8 +3,8 @@
 
 File: hledger.info,  Node: Top,  Next: COMMON TASKS,  Up: (dir)
 
-hledger(1) hledger 1.17
-***********************
+hledger(1) hledger 1.17.1
+*************************
 
 hledger - a command-line accounting tool
 
@@ -3734,187 +3734,187 @@
 
 Tag Table:
 Node: Top68
-Node: COMMON TASKS2315
-Ref: #common-tasks2427
-Node: Getting help2834
-Ref: #getting-help2966
-Node: Constructing command lines3519
-Ref: #constructing-command-lines3711
-Node: Starting a journal file4408
-Ref: #starting-a-journal-file4606
-Node: Setting opening balances5794
-Ref: #setting-opening-balances5990
-Node: Recording transactions9131
-Ref: #recording-transactions9311
-Node: Reconciling9867
-Ref: #reconciling10010
-Node: Reporting12267
-Ref: #reporting12407
-Node: Migrating to a new file16406
-Ref: #migrating-to-a-new-file16554
-Node: OPTIONS16853
-Ref: #options16960
-Node: General options17330
-Ref: #general-options17455
-Node: Command options20225
-Ref: #command-options20376
-Node: Command arguments20774
-Ref: #command-arguments20921
-Node: Queries21801
-Ref: #queries21956
-Node: Special characters in arguments and queries25918
-Ref: #special-characters-in-arguments-and-queries26146
-Node: More escaping26597
-Ref: #more-escaping26759
-Node: Even more escaping27055
-Ref: #even-more-escaping27249
-Node: Less escaping27920
-Ref: #less-escaping28082
-Node: Unicode characters28327
-Ref: #unicode-characters28509
-Node: Input files29921
-Ref: #input-files30064
-Node: Output destination31993
-Ref: #output-destination32145
-Node: Output format32570
-Ref: #output-format32720
-Node: Regular expressions34768
-Ref: #regular-expressions34925
-Node: Smart dates36286
-Ref: #smart-dates36437
-Node: Report start & end date37798
-Ref: #report-start-end-date37970
-Node: Report intervals39408
-Ref: #report-intervals39573
-Node: Period expressions39963
-Ref: #period-expressions40123
-Node: Depth limiting44249
-Ref: #depth-limiting44393
-Node: Pivoting44735
-Ref: #pivoting44858
-Node: Valuation46534
-Ref: #valuation46636
-Node: -B Cost46816
-Ref: #b-cost46927
-Node: -V Market value47125
-Ref: #v-market-value47299
-Node: -X Market value in specified commodity48731
-Ref: #x-market-value-in-specified-commodity48970
-Node: --value Flexible valuation49146
-Ref: #value-flexible-valuation49372
-Node: Effect of --value on reports53877
-Ref: #effect-of---value-on-reports54093
-Node: Combining -B -V -X --value59639
-Ref: #combining--b--v--x---value59822
-Node: COMMANDS59858
-Ref: #commands59966
-Node: accounts61050
-Ref: #accounts61148
-Node: activity61847
-Ref: #activity61957
-Node: add62340
-Ref: #add62439
-Node: balance65178
-Ref: #balance65289
-Node: Classic balance report66747
-Ref: #classic-balance-report66920
-Node: Customising the classic balance report68289
-Ref: #customising-the-classic-balance-report68517
-Node: Colour support70593
-Ref: #colour-support70760
-Node: Flat mode70933
-Ref: #flat-mode71081
-Node: Depth limited balance reports71494
-Ref: #depth-limited-balance-reports71679
-Node: Percentages72135
-Ref: #percentages72301
-Node: Multicolumn balance report73438
-Ref: #multicolumn-balance-report73618
-Node: Budget report78880
-Ref: #budget-report79023
-Node: Nested budgets84225
-Ref: #nested-budgets84337
-Ref: #output-format-187818
-Node: balancesheet88015
-Ref: #balancesheet88151
-Node: balancesheetequity89617
-Ref: #balancesheetequity89766
-Node: cashflow90489
-Ref: #cashflow90617
-Node: check-dates91796
-Ref: #check-dates91923
-Node: check-dupes92202
-Ref: #check-dupes92326
-Node: close92619
-Ref: #close92733
-Node: close usage94255
-Ref: #close-usage94348
-Node: commodities97161
-Ref: #commodities97288
-Node: descriptions97370
-Ref: #descriptions97498
-Node: diff97679
-Ref: #diff97785
-Node: files98832
-Ref: #files98932
-Node: help99079
-Ref: #help99179
-Node: import100260
-Ref: #import100374
-Node: Importing balance assignments101267
-Ref: #importing-balance-assignments101415
-Node: incomestatement102064
-Ref: #incomestatement102197
-Node: notes103684
-Ref: #notes103797
-Node: payees103923
-Ref: #payees104029
-Node: prices104187
-Ref: #prices104293
-Node: print104634
-Ref: #print104744
-Node: print-unique109530
-Ref: #print-unique109656
-Node: register109941
-Ref: #register110068
-Node: Custom register output114240
-Ref: #custom-register-output114369
-Node: register-match115706
-Ref: #register-match115840
-Node: rewrite116191
-Ref: #rewrite116306
-Node: Re-write rules in a file118161
-Ref: #re-write-rules-in-a-file118295
-Node: Diff output format119505
-Ref: #diff-output-format119674
-Node: rewrite vs print --auto120766
-Ref: #rewrite-vs.-print---auto120945
-Node: roi121501
-Ref: #roi121599
-Node: stats122611
-Ref: #stats122710
-Node: tags123498
-Ref: #tags123596
-Node: test123890
-Ref: #test123998
-Node: Add-on Commands124745
-Ref: #add-on-commands124862
-Node: ui126205
-Ref: #ui126293
-Node: web126347
-Ref: #web126450
-Node: iadd126566
-Ref: #iadd126677
-Node: interest126759
-Ref: #interest126866
-Node: ENVIRONMENT127106
-Ref: #environment127218
-Node: FILES128047
-Ref: #files-1128150
-Node: LIMITATIONS128363
-Ref: #limitations128482
-Node: TROUBLESHOOTING129224
-Ref: #troubleshooting129337
+Node: COMMON TASKS2319
+Ref: #common-tasks2431
+Node: Getting help2838
+Ref: #getting-help2970
+Node: Constructing command lines3523
+Ref: #constructing-command-lines3715
+Node: Starting a journal file4412
+Ref: #starting-a-journal-file4610
+Node: Setting opening balances5798
+Ref: #setting-opening-balances5994
+Node: Recording transactions9135
+Ref: #recording-transactions9315
+Node: Reconciling9871
+Ref: #reconciling10014
+Node: Reporting12271
+Ref: #reporting12411
+Node: Migrating to a new file16410
+Ref: #migrating-to-a-new-file16558
+Node: OPTIONS16857
+Ref: #options16964
+Node: General options17334
+Ref: #general-options17459
+Node: Command options20229
+Ref: #command-options20380
+Node: Command arguments20778
+Ref: #command-arguments20925
+Node: Queries21805
+Ref: #queries21960
+Node: Special characters in arguments and queries25922
+Ref: #special-characters-in-arguments-and-queries26150
+Node: More escaping26601
+Ref: #more-escaping26763
+Node: Even more escaping27059
+Ref: #even-more-escaping27253
+Node: Less escaping27924
+Ref: #less-escaping28086
+Node: Unicode characters28331
+Ref: #unicode-characters28513
+Node: Input files29925
+Ref: #input-files30068
+Node: Output destination31997
+Ref: #output-destination32149
+Node: Output format32574
+Ref: #output-format32724
+Node: Regular expressions34772
+Ref: #regular-expressions34929
+Node: Smart dates36290
+Ref: #smart-dates36441
+Node: Report start & end date37802
+Ref: #report-start-end-date37974
+Node: Report intervals39412
+Ref: #report-intervals39577
+Node: Period expressions39967
+Ref: #period-expressions40127
+Node: Depth limiting44253
+Ref: #depth-limiting44397
+Node: Pivoting44739
+Ref: #pivoting44862
+Node: Valuation46538
+Ref: #valuation46640
+Node: -B Cost46820
+Ref: #b-cost46931
+Node: -V Market value47129
+Ref: #v-market-value47303
+Node: -X Market value in specified commodity48735
+Ref: #x-market-value-in-specified-commodity48974
+Node: --value Flexible valuation49150
+Ref: #value-flexible-valuation49376
+Node: Effect of --value on reports53881
+Ref: #effect-of---value-on-reports54097
+Node: Combining -B -V -X --value59643
+Ref: #combining--b--v--x---value59826
+Node: COMMANDS59862
+Ref: #commands59970
+Node: accounts61054
+Ref: #accounts61152
+Node: activity61851
+Ref: #activity61961
+Node: add62344
+Ref: #add62443
+Node: balance65182
+Ref: #balance65293
+Node: Classic balance report66751
+Ref: #classic-balance-report66924
+Node: Customising the classic balance report68293
+Ref: #customising-the-classic-balance-report68521
+Node: Colour support70597
+Ref: #colour-support70764
+Node: Flat mode70937
+Ref: #flat-mode71085
+Node: Depth limited balance reports71498
+Ref: #depth-limited-balance-reports71683
+Node: Percentages72139
+Ref: #percentages72305
+Node: Multicolumn balance report73442
+Ref: #multicolumn-balance-report73622
+Node: Budget report78884
+Ref: #budget-report79027
+Node: Nested budgets84229
+Ref: #nested-budgets84341
+Ref: #output-format-187822
+Node: balancesheet88019
+Ref: #balancesheet88155
+Node: balancesheetequity89621
+Ref: #balancesheetequity89770
+Node: cashflow90493
+Ref: #cashflow90621
+Node: check-dates91800
+Ref: #check-dates91927
+Node: check-dupes92206
+Ref: #check-dupes92330
+Node: close92623
+Ref: #close92737
+Node: close usage94259
+Ref: #close-usage94352
+Node: commodities97165
+Ref: #commodities97292
+Node: descriptions97374
+Ref: #descriptions97502
+Node: diff97683
+Ref: #diff97789
+Node: files98836
+Ref: #files98936
+Node: help99083
+Ref: #help99183
+Node: import100264
+Ref: #import100378
+Node: Importing balance assignments101271
+Ref: #importing-balance-assignments101419
+Node: incomestatement102068
+Ref: #incomestatement102201
+Node: notes103688
+Ref: #notes103801
+Node: payees103927
+Ref: #payees104033
+Node: prices104191
+Ref: #prices104297
+Node: print104638
+Ref: #print104748
+Node: print-unique109534
+Ref: #print-unique109660
+Node: register109945
+Ref: #register110072
+Node: Custom register output114244
+Ref: #custom-register-output114373
+Node: register-match115710
+Ref: #register-match115844
+Node: rewrite116195
+Ref: #rewrite116310
+Node: Re-write rules in a file118165
+Ref: #re-write-rules-in-a-file118299
+Node: Diff output format119509
+Ref: #diff-output-format119678
+Node: rewrite vs print --auto120770
+Ref: #rewrite-vs.-print---auto120949
+Node: roi121505
+Ref: #roi121603
+Node: stats122615
+Ref: #stats122714
+Node: tags123502
+Ref: #tags123600
+Node: test123894
+Ref: #test124002
+Node: Add-on Commands124749
+Ref: #add-on-commands124866
+Node: ui126209
+Ref: #ui126297
+Node: web126351
+Ref: #web126454
+Node: iadd126570
+Ref: #iadd126681
+Node: interest126763
+Ref: #interest126870
+Node: ENVIRONMENT127110
+Ref: #environment127222
+Node: FILES128051
+Ref: #files-1128154
+Node: LIMITATIONS128367
+Ref: #limitations128486
+Node: TROUBLESHOOTING129228
+Ref: #troubleshooting129341
 
 End Tag Table
 
diff --git a/embeddedfiles/hledger.txt b/embeddedfiles/hledger.txt
--- a/embeddedfiles/hledger.txt
+++ b/embeddedfiles/hledger.txt
@@ -3187,4 +3187,4 @@
 
 
 
-hledger 1.17                      March 2020                        hledger(1)
+hledger 1.17.1                    March 2020                        hledger(1)
diff --git a/embeddedfiles/hledger_csv.5 b/embeddedfiles/hledger_csv.5
--- a/embeddedfiles/hledger_csv.5
+++ b/embeddedfiles/hledger_csv.5
@@ -1,6 +1,6 @@
 .\"t
 
-.TH "hledger_csv" "5" "March 2020" "hledger 1.17" "hledger User Manuals"
+.TH "hledger_csv" "5" "March 2020" "hledger 1.17.0.1" "hledger User Manuals"
 
 
 
@@ -487,34 +487,48 @@
 \f[C]description\f[R], \f[C]comment\f[R] can be used to form the
 transaction\[aq]s first line.
 .SS Posting field names
+.SS account
 .PP
-\f[C]accountN\f[R], where N is 1 to 9, generates a posting, with that
-account name.
+\f[C]accountN\f[R], where N is 1 to 9, causes a posting to be generated,
+with that account name.
+.PP
 Most often there are two postings, so you\[aq]ll want to set
 \f[C]account1\f[R] and \f[C]account2\f[R].
-If a posting\[aq]s account name is left unset but its amount is set, a
-default account name will be chosen (like expenses:unknown or
-income:unknown).
+Typically \f[C]account1\f[R] is associated with the CSV file, and is set
+once with a top-level assignment, while \f[C]account2\f[R] is set based
+on each transaction\[aq]s description, and in conditional blocks.
 .PP
+If a posting\[aq]s account name is left unset but its amount is set (see
+below), a default account name will be chosen (like
+\[dq]expenses:unknown\[dq] or \[dq]income:unknown\[dq]).
+.SS amount
+.PP
 \f[C]amountN\f[R] sets posting N\[aq]s amount.
-Or, \f[C]amount\f[R] with no N sets posting 1\[aq]s.
-If the CSV has debits and credits in separate fields, use
-\f[C]amountN-in\f[R] and \f[C]amountN-out\f[R] instead.
-Or \f[C]amount-in\f[R] and \f[C]amount-out\f[R] with no N for posting 1.
+If the CSV uses separate fields for debit and credit amounts, you can
+use \f[C]amountN-in\f[R] and \f[C]amountN-out\f[R] instead.
 .PP
-For convenience and backwards compatibility, if you set the amount of
-posting 1 only, a second posting with the negative amount will be
-generated automatically.
-(Unless the account name is parenthesised indicating an unbalanced
-posting.)
+Also, for compatibility with hledger <1.17: \f[C]amount\f[R] or
+\f[C]amount-in\f[R]/\f[C]amount-out\f[R] with no number sets the amount
+for postings 1 and 2.
+For posting 2 the amount is negated, and converted to cost if
+there\[aq]s a transaction price.
+.SS currency
 .PP
-If the CSV has the currency symbol in a separate field, you can use
-\f[C]currencyN\f[R] to prepend it to posting N\[aq]s amount.
-\f[C]currency\f[R] with no N affects ALL postings.
+If the CSV has the currency symbol in a separate field (ie, not part of
+the amount field), you can use \f[C]currencyN\f[R] to prepend it to
+posting N\[aq]s amount.
+Or, \f[C]currency\f[R] with no number affects all postings.
+.SS balance
 .PP
 \f[C]balanceN\f[R] sets a balance assertion amount (or if the posting
-amount is left empty, a balance assignment).
-You may need to adjust this with the \f[C]balance-type\f[R] rule.
+amount is left empty, a balance assignment) on posting N.
+.PP
+Also, for compatibility with hledger <1.17: \f[C]balance\f[R] with no
+number is equivalent to \f[C]balance1\f[R].
+.PP
+You can adjust the type of assertion/assignment with the
+\f[C]balance-type\f[R] rule (see below).
+.SS comment
 .PP
 Finally, \f[C]commentN\f[R] sets a comment on the Nth posting.
 Comments can also contain tags, as usual.
diff --git a/embeddedfiles/hledger_csv.info b/embeddedfiles/hledger_csv.info
--- a/embeddedfiles/hledger_csv.info
+++ b/embeddedfiles/hledger_csv.info
@@ -3,8 +3,8 @@
 
 File: hledger_csv.info,  Node: Top,  Next: EXAMPLES,  Up: (dir)
 
-hledger_csv(5) hledger 1.17
-***************************
+hledger_csv(5) hledger 1.17.0.1
+*******************************
 
 CSV - how hledger reads CSV data, and the CSV rules file format
 
@@ -451,31 +451,79 @@
 2.2.2 Posting field names
 -------------------------
 
-'accountN', where N is 1 to 9, generates a posting, with that account
-name.  Most often there are two postings, so you'll want to set
-'account1' and 'account2'.  If a posting's account name is left unset
-but its amount is set, a default account name will be chosen (like
-expenses:unknown or income:unknown).
+* Menu:
 
-   'amountN' sets posting N's amount.  Or, 'amount' with no N sets
-posting 1's.  If the CSV has debits and credits in separate fields, use
-'amountN-in' and 'amountN-out' instead.  Or 'amount-in' and 'amount-out'
-with no N for posting 1.
+* account::
+* amount::
+* currency::
+* balance::
+* comment::
 
-   For convenience and backwards compatibility, if you set the amount of
-posting 1 only, a second posting with the negative amount will be
-generated automatically.  (Unless the account name is parenthesised
-indicating an unbalanced posting.)
+
+File: hledger_csv.info,  Node: account,  Next: amount,  Up: Posting field names
 
-   If the CSV has the currency symbol in a separate field, you can use
-'currencyN' to prepend it to posting N's amount.  'currency' with no N
-affects ALL postings.
+2.2.2.1 account
+...............
 
-   'balanceN' sets a balance assertion amount (or if the posting amount
-is left empty, a balance assignment).  You may need to adjust this with
-the 'balance-type' rule.
+'accountN', where N is 1 to 9, causes a posting to be generated, with
+that account name.
 
-   Finally, 'commentN' sets a comment on the Nth posting.  Comments can
+   Most often there are two postings, so you'll want to set 'account1'
+and 'account2'.  Typically 'account1' is associated with the CSV file,
+and is set once with a top-level assignment, while 'account2' is set
+based on each transaction's description, and in conditional blocks.
+
+   If a posting's account name is left unset but its amount is set (see
+below), a default account name will be chosen (like "expenses:unknown"
+or "income:unknown").
+
+
+File: hledger_csv.info,  Node: amount,  Next: currency,  Prev: account,  Up: Posting field names
+
+2.2.2.2 amount
+..............
+
+'amountN' sets posting N's amount.  If the CSV uses separate fields for
+debit and credit amounts, you can use 'amountN-in' and 'amountN-out'
+instead.
+
+   Also, for compatibility with hledger <1.17: 'amount' or
+'amount-in'/'amount-out' with no number sets the amount for postings 1
+and 2.  For posting 2 the amount is negated, and converted to cost if
+there's a transaction price.
+
+
+File: hledger_csv.info,  Node: currency,  Next: balance,  Prev: amount,  Up: Posting field names
+
+2.2.2.3 currency
+................
+
+If the CSV has the currency symbol in a separate field (ie, not part of
+the amount field), you can use 'currencyN' to prepend it to posting N's
+amount.  Or, 'currency' with no number affects all postings.
+
+
+File: hledger_csv.info,  Node: balance,  Next: comment,  Prev: currency,  Up: Posting field names
+
+2.2.2.4 balance
+...............
+
+'balanceN' sets a balance assertion amount (or if the posting amount is
+left empty, a balance assignment) on posting N.
+
+   Also, for compatibility with hledger <1.17: 'balance' with no number
+is equivalent to 'balance1'.
+
+   You can adjust the type of assertion/assignment with the
+'balance-type' rule (see below).
+
+
+File: hledger_csv.info,  Node: comment,  Prev: balance,  Up: Posting field names
+
+2.2.2.5 comment
+...............
+
+Finally, 'commentN' sets a comment on the Nth posting.  Comments can
 also contain tags, as usual.
 
    See TIPS below for more about setting amounts and currency.
@@ -971,64 +1019,74 @@
 
 Tag Table:
 Node: Top72
-Node: EXAMPLES2093
-Ref: #examples2199
-Node: Basic2407
-Ref: #basic2507
-Node: Bank of Ireland3049
-Ref: #bank-of-ireland3184
-Node: Amazon4646
-Ref: #amazon4764
-Node: Paypal6483
-Ref: #paypal6577
-Node: CSV RULES14221
-Ref: #csv-rules14330
-Node: skip14606
-Ref: #skip14699
-Node: fields15074
-Ref: #fields15196
-Node: Transaction field names16361
-Ref: #transaction-field-names16521
-Node: Posting field names16632
-Ref: #posting-field-names16784
-Node: field assignment18075
-Ref: #field-assignment18218
-Node: separator19036
-Ref: #separator19165
-Node: if19576
-Ref: #if19678
-Node: end21597
-Ref: #end21703
-Node: date-format21927
-Ref: #date-format22059
-Node: newest-first22808
-Ref: #newest-first22946
-Node: include23629
-Ref: #include23758
-Node: balance-type24202
-Ref: #balance-type24322
-Node: TIPS25022
-Ref: #tips25104
-Node: Rapid feedback25360
-Ref: #rapid-feedback25477
-Node: Valid CSV25937
-Ref: #valid-csv26067
-Node: File Extension26259
-Ref: #file-extension26411
-Node: Reading multiple CSV files26821
-Ref: #reading-multiple-csv-files27006
-Node: Valid transactions27247
-Ref: #valid-transactions27425
-Node: Deduplicating importing28053
-Ref: #deduplicating-importing28232
-Node: Setting amounts29265
-Ref: #setting-amounts29434
-Node: Setting currency/commodity30420
-Ref: #setting-currencycommodity30612
-Node: Referencing other fields31415
-Ref: #referencing-other-fields31615
-Node: How CSV rules are evaluated32512
-Ref: #how-csv-rules-are-evaluated32685
+Node: EXAMPLES2101
+Ref: #examples2207
+Node: Basic2415
+Ref: #basic2515
+Node: Bank of Ireland3057
+Ref: #bank-of-ireland3192
+Node: Amazon4654
+Ref: #amazon4772
+Node: Paypal6491
+Ref: #paypal6585
+Node: CSV RULES14229
+Ref: #csv-rules14338
+Node: skip14614
+Ref: #skip14707
+Node: fields15082
+Ref: #fields15204
+Node: Transaction field names16369
+Ref: #transaction-field-names16529
+Node: Posting field names16640
+Ref: #posting-field-names16792
+Node: account16862
+Ref: #account16978
+Node: amount17514
+Ref: #amount17645
+Node: currency18026
+Ref: #currency18161
+Node: balance18367
+Ref: #balance18501
+Node: comment18818
+Ref: #comment18935
+Node: field assignment19098
+Ref: #field-assignment19241
+Node: separator20059
+Ref: #separator20188
+Node: if20599
+Ref: #if20701
+Node: end22620
+Ref: #end22726
+Node: date-format22950
+Ref: #date-format23082
+Node: newest-first23831
+Ref: #newest-first23969
+Node: include24652
+Ref: #include24781
+Node: balance-type25225
+Ref: #balance-type25345
+Node: TIPS26045
+Ref: #tips26127
+Node: Rapid feedback26383
+Ref: #rapid-feedback26500
+Node: Valid CSV26960
+Ref: #valid-csv27090
+Node: File Extension27282
+Ref: #file-extension27434
+Node: Reading multiple CSV files27844
+Ref: #reading-multiple-csv-files28029
+Node: Valid transactions28270
+Ref: #valid-transactions28448
+Node: Deduplicating importing29076
+Ref: #deduplicating-importing29255
+Node: Setting amounts30288
+Ref: #setting-amounts30457
+Node: Setting currency/commodity31443
+Ref: #setting-currencycommodity31635
+Node: Referencing other fields32438
+Ref: #referencing-other-fields32638
+Node: How CSV rules are evaluated33535
+Ref: #how-csv-rules-are-evaluated33708
 
 End Tag Table
 
diff --git a/embeddedfiles/hledger_csv.txt b/embeddedfiles/hledger_csv.txt
--- a/embeddedfiles/hledger_csv.txt
+++ b/embeddedfiles/hledger_csv.txt
@@ -376,30 +376,45 @@
        transaction's first line.
 
    Posting field names
-       accountN, where N is 1 to 9, generates a  posting,  with  that  account
-       name.   Most  often  there  are two postings, so you'll want to set ac-
-       count1 and account2.  If a posting's account name is left unset but its
-       amount is set, a default account name will be chosen (like expenses:un-
-       known or income:unknown).
+   account
+       accountN, where N is 1 to 9, causes a posting  to  be  generated,  with
+       that account name.
 
-       amountN sets posting N's amount.  Or, amount with  no  N  sets  posting
-       1's.   If  the  CSV  has  debits  and  credits  in separate fields, use
-       amountN-in and amountN-out instead.  Or amount-in and  amount-out  with
-       no N for posting 1.
+       Most  often  there are two postings, so you'll want to set account1 and
+       account2.  Typically account1 is associated with the CSV file,  and  is
+       set  once  with  a top-level assignment, while account2 is set based on
+       each transaction's description, and in conditional blocks.
 
-       For  convenience  and backwards compatibility, if you set the amount of
-       posting 1 only, a second posting with the negative amount will be  gen-
-       erated  automatically.  (Unless the account name is parenthesised indi-
-       cating an unbalanced posting.)
+       If a posting's account name is left unset but its amount  is  set  (see
+       below),  a default account name will be chosen (like "expenses:unknown"
+       or "income:unknown").
 
-       If the CSV has the currency symbol in a separate  field,  you  can  use
-       currencyN  to prepend it to posting N's amount.  currency with no N af-
-       fects ALL postings.
+   amount
+       amountN sets posting N's amount.  If the CSV uses separate  fields  for
+       debit  and  credit  amounts, you can use amountN-in and amountN-out in-
+       stead.
 
-       balanceN sets a balance assertion amount (or if the posting  amount  is
-       left  empty,  a  balance assignment).  You may need to adjust this with
-       the balance-type rule.
+       Also, for compatibility with hledger <1.17: amount or amount-in/amount-
+       out with no number sets the amount for postings 1 and 2.  For posting 2
+       the amount is negated, and converted to cost if there's  a  transaction
+       price.
 
+   currency
+       If the CSV has the currency symbol in a separate field (ie, not part of
+       the amount field), you can use currencyN to prepend it to  posting  N's
+       amount.  Or, currency with no number affects all postings.
+
+   balance
+       balanceN  sets  a balance assertion amount (or if the posting amount is
+       left empty, a balance assignment) on posting N.
+
+       Also, for compatibility with hledger <1.17: balance with no  number  is
+       equivalent to balance1.
+
+       You  can  adjust the type of assertion/assignment with the balance-type
+       rule (see below).
+
+   comment
        Finally, commentN sets a comment on the Nth posting.  Comments can also
        contain tags, as usual.
 
@@ -819,4 +834,4 @@
 
 
 
-hledger 1.17                      March 2020                    hledger_csv(5)
+hledger 1.17.0.1                  March 2020                    hledger_csv(5)
diff --git a/embeddedfiles/hledger_journal.5 b/embeddedfiles/hledger_journal.5
--- a/embeddedfiles/hledger_journal.5
+++ b/embeddedfiles/hledger_journal.5
@@ -1,6 +1,6 @@
 .\"t
 
-.TH "hledger_journal" "5" "March 2020" "hledger 1.17" "hledger User Manuals"
+.TH "hledger_journal" "5" "March 2020" "hledger 1.17.0.1" "hledger User Manuals"
 
 
 
@@ -524,7 +524,7 @@
 \f[R]
 .fi
 .PP
-A decimal mark (decimal point) can be written with a period or a comma:
+A decimal mark can be written as a period or a comma:
 .IP
 .nf
 \f[C]
@@ -1027,6 +1027,16 @@
 T}@T{
 following inline/included entries until end of current file
 T}
+T{
+\f[C]=\f[R]
+T}@T{
+T}@T{
+T}@T{
+declare an auto posting rule, adding postings to other transactions
+T}@T{
+all entries in parent/current/child files (but not sibling files, see
+#1212)
+T}
 .TE
 .PP
 And some definitions:
@@ -1066,13 +1076,21 @@
 affect, and whether they are focussed on input (parsing) or output
 (reports).
 Some directives have multiple effects.
+.SS Directives and multiple files
 .PP
-If you have a journal made up of multiple files, or pass multiple -f
-options on the command line, note that directives which affect input
-typically last only until the end of their defining file.
-This provides more simplicity and predictability, eg reports are not
-changed by writing file options in a different order.
-It can be surprising at times though.
+If you use multiple \f[C]-f\f[R]/\f[C]--file\f[R] options, or the
+\f[C]include\f[R] directive, hledger will process multiple input files.
+But note that directives which affect input (see above) typically last
+only until the end of the file in which they occur.
+.PP
+This may seem inconvenient, but it\[aq]s intentional; it makes reports
+stable and deterministic, independent of the order of input.
+Otherwise you could see different numbers if you happened to write -f
+options in a different order, or if you moved includes around while
+cleaning up your files.
+.PP
+It can be surprising though; for example, it means that \f[C]alias\f[R]
+directives do not affect parent or sibling files (see below).
 .SS Comment blocks
 .PP
 A line containing just \f[C]comment\f[R] starts a commented region of
@@ -1543,6 +1561,46 @@
 .PP
 In case of trouble, adding \f[C]--debug=6\f[R] to the command line will
 show which aliases are being applied when.
+.SS Aliases and multiple files
+.PP
+As explained at Directives and multiple files, \f[C]alias\f[R]
+directives do not affect parent or sibling files.
+Eg in this command,
+.IP
+.nf
+\f[C]
+hledger -f a.aliases -f b.journal
+\f[R]
+.fi
+.PP
+account aliases defined in a.aliases will not affect b.journal.
+Including the aliases doesn\[aq]t work either:
+.IP
+.nf
+\f[C]
+include a.aliases
+
+2020-01-01  ; not affected by a.aliases
+  foo  1
+  bar
+\f[R]
+.fi
+.PP
+This means that account aliases should usually be declared at the start
+of your top-most file, like this:
+.IP
+.nf
+\f[C]
+alias foo=Foo
+alias bar=Bar
+
+2020-01-01  ; affected by aliases above
+  foo  1
+  bar
+
+include c.journal  ; also affected
+\f[R]
+.fi
 .SS \f[C]end aliases\f[R]
 .PP
 You can clear (forget) all currently defined aliases with the
@@ -1759,31 +1817,28 @@
 For more details, see: balance: Budget report and Budgeting and
 Forecasting.
 .PP
-.SS Auto postings / transaction modifiers
+.SS Auto postings
 .PP
-Transaction modifier rules, AKA auto posting rules, describe changes to
-be applied automatically to certain matched transactions.
-Currently just one kind of change is possible - adding extra postings,
-which we call \[dq]automated postings\[dq] or just \[dq]auto
-postings\[dq].
-These rules become active when you use the \f[C]--auto\f[R] flag.
+\[dq]Automated postings\[dq] or \[dq]auto postings\[dq] are extra
+postings which get added automatically to transactions which match
+certain queries, defined by \[dq]auto posting rules\[dq], when you use
+the \f[C]--auto\f[R] flag.
 .PP
-A transaction modifier rule looks much like a normal transaction except
-the first line is an equals sign followed by a query that matches
-certain postings (mnemonic: \f[C]=\f[R] suggests matching).
-And each \[dq]posting\[dq] is actually a posting-generating rule:
+An auto posting rule looks a bit like a transaction:
 .IP
 .nf
 \f[C]
 = QUERY
     ACCOUNT  AMOUNT
-    ACCOUNT  [AMOUNT]
     ...
+    ACCOUNT  [AMOUNT]
 \f[R]
 .fi
 .PP
-These posting-generating rules look like normal postings, except the
-amount can be:
+except the first line is an equals sign (mnemonic: \f[C]=\f[R] suggests
+matching), followed by a query (which matches existing postings), and
+each \[dq]posting\[dq] line describes a posting to be generated, and the
+posting amounts can be:
 .IP \[bu] 2
 a normal amount with a commodity symbol, eg \f[C]$2\f[R].
 This will be used as-is.
@@ -1801,7 +1856,7 @@
 The matched posting\[aq]s amount will be multiplied by N, and its
 commodity symbol will be replaced with S.
 .PP
-A query term containing spaces must be enclosed in single or double
+Any query term containing spaces must be enclosed in single or double
 quotes, as on the command line.
 Eg, note the quotes around the second query term below:
 .IP
@@ -1812,10 +1867,6 @@
 \f[R]
 .fi
 .PP
-These rules have global effect - a rule appearing anywhere in your data
-can potentially affect any transaction, including transactions recorded
-above it or in another file.
-.PP
 Some examples:
 .IP
 .nf
@@ -1854,6 +1905,12 @@
     assets:checking            $20
 \f[R]
 .fi
+.SS Auto postings and multiple files
+.PP
+An auto posting rule can affect any transaction in the current file, or
+in any parent file or child file.
+Note, currently it will not affect sibling files (when multiple
+\f[C]-f\f[R]/\f[C]--file\f[R] are used - see #1212).
 .SS Auto postings and dates
 .PP
 A posting date (or secondary date) in the matched posting, or (taking
@@ -1861,7 +1918,7 @@
 used in the generated posting.
 .SS Auto postings and transaction balancing / inferred amounts / balance assertions
 .PP
-Currently, transaction modifiers are applied / auto postings are added:
+Currently, auto postings are added:
 .IP \[bu] 2
 after missing amounts are inferred, and transactions are checked for
 balancedness,
@@ -1873,7 +1930,7 @@
 This changed in hledger 1.12+; see #893 for background.
 .SS Auto posting tags
 .PP
-Postings added by transaction modifiers will have some extra tags:
+Automated postings will have some extra tags:
 .IP \[bu] 2
 \f[C]generated-posting:= QUERY\f[R] - shows this was generated by an
 auto posting rule, and the query
@@ -1883,8 +1940,8 @@
 This can be used to match postings generated \[dq]just now\[dq], rather
 than generated in the past and saved to the journal.
 .PP
-Also, any transaction that has been changed by transaction modifier
-rules will have these tags added:
+Also, any transaction that has been changed by auto posting rules will
+have these tags added:
 .IP \[bu] 2
 \f[C]modified:\f[R] - this transaction was modified
 .IP \[bu] 2
diff --git a/embeddedfiles/hledger_journal.info b/embeddedfiles/hledger_journal.info
--- a/embeddedfiles/hledger_journal.info
+++ b/embeddedfiles/hledger_journal.info
@@ -4,8 +4,8 @@
 
 File: hledger_journal.info,  Node: Top,  Up: (dir)
 
-hledger_journal(5) hledger 1.17
-*******************************
+hledger_journal(5) hledger 1.17.0.1
+***********************************
 
 Journal - hledger's default file format, representing a General Journal
 
@@ -85,7 +85,7 @@
 * Balance Assignments::
 * Directives::
 * Periodic transactions::
-* Auto postings / transaction modifiers::
+* Auto postings::
 
 
 File: hledger_journal.info,  Node: Dates,  Next: Status,  Up: Transactions
@@ -470,8 +470,7 @@
 1E-6
 EUR 1E3
 
-   A decimal mark (decimal point) can be written with a period or a
-comma:
+   A decimal mark can be written as a period or a comma:
 
 1.23
 1,23456780000009
@@ -912,6 +911,11 @@
                            dates                         inline/included
                                                          entries until end
                                                          of current file
+'='                        declare an auto posting       all entries in
+                           rule, adding postings to      parent/current/child
+                           other transactions            files (but not
+                                                         sibling files,
+                                                         see #1212)
 
    And some definitions:
 
@@ -929,15 +933,9 @@
 they affect, and whether they are focussed on input (parsing) or output
 (reports).  Some directives have multiple effects.
 
-   If you have a journal made up of multiple files, or pass multiple -f
-options on the command line, note that directives which affect input
-typically last only until the end of their defining file.  This provides
-more simplicity and predictability, eg reports are not changed by
-writing file options in a different order.  It can be surprising at
-times though.
-
 * Menu:
 
+* Directives and multiple files::
 * Comment blocks::
 * Including other files::
 * Default year::
@@ -949,9 +947,29 @@
 * Default parent account::
 
 
-File: hledger_journal.info,  Node: Comment blocks,  Next: Including other files,  Up: Directives
+File: hledger_journal.info,  Node: Directives and multiple files,  Next: Comment blocks,  Up: Directives
 
-1.12.1 Comment blocks
+1.12.1 Directives and multiple files
+------------------------------------
+
+If you use multiple '-f'/'--file' options, or the 'include' directive,
+hledger will process multiple input files.  But note that directives
+which affect input (see above) typically last only until the end of the
+file in which they occur.
+
+   This may seem inconvenient, but it's intentional; it makes reports
+stable and deterministic, independent of the order of input.  Otherwise
+you could see different numbers if you happened to write -f options in a
+different order, or if you moved includes around while cleaning up your
+files.
+
+   It can be surprising though; for example, it means that 'alias'
+directives do not affect parent or sibling files (see below).
+
+
+File: hledger_journal.info,  Node: Comment blocks,  Next: Including other files,  Prev: Directives and multiple files,  Up: Directives
+
+1.12.2 Comment blocks
 ---------------------
 
 A line containing just 'comment' starts a commented region of the file,
@@ -961,7 +979,7 @@
 
 File: hledger_journal.info,  Node: Including other files,  Next: Default year,  Prev: Comment blocks,  Up: Directives
 
-1.12.2 Including other files
+1.12.3 Including other files
 ----------------------------
 
 You can pull in the content of additional files by writing an include
@@ -979,7 +997,7 @@
 
 File: hledger_journal.info,  Node: Default year,  Next: Declaring commodities,  Prev: Including other files,  Up: Directives
 
-1.12.3 Default year
+1.12.4 Default year
 -------------------
 
 You can set a default year to be used for subsequent dates which don't
@@ -1005,7 +1023,7 @@
 
 File: hledger_journal.info,  Node: Declaring commodities,  Next: Default commodity,  Prev: Default year,  Up: Directives
 
-1.12.4 Declaring commodities
+1.12.5 Declaring commodities
 ----------------------------
 
 The 'commodity' directive has several functions:
@@ -1055,7 +1073,7 @@
 
 File: hledger_journal.info,  Node: Default commodity,  Next: Market prices,  Prev: Declaring commodities,  Up: Directives
 
-1.12.5 Default commodity
+1.12.6 Default commodity
 ------------------------
 
 The 'D' directive sets a default commodity, to be used for amounts
@@ -1082,7 +1100,7 @@
 
 File: hledger_journal.info,  Node: Market prices,  Next: Declaring accounts,  Prev: Default commodity,  Up: Directives
 
-1.12.6 Market prices
+1.12.7 Market prices
 --------------------
 
 The 'P' directive declares a market price, which is an exchange rate
@@ -1112,7 +1130,7 @@
 
 File: hledger_journal.info,  Node: Declaring accounts,  Next: Rewriting accounts,  Prev: Market prices,  Up: Directives
 
-1.12.7 Declaring accounts
+1.12.8 Declaring accounts
 -------------------------
 
 'account' directives can be used to pre-declare accounts.  Though not
@@ -1145,7 +1163,7 @@
 
 File: hledger_journal.info,  Node: Account comments,  Next: Account subdirectives,  Up: Declaring accounts
 
-1.12.7.1 Account comments
+1.12.8.1 Account comments
 .........................
 
 Comments, beginning with a semicolon, can be added:
@@ -1165,7 +1183,7 @@
 
 File: hledger_journal.info,  Node: Account subdirectives,  Next: Account types,  Prev: Account comments,  Up: Declaring accounts
 
-1.12.7.2 Account subdirectives
+1.12.8.2 Account subdirectives
 ..............................
 
 We also allow (and ignore) Ledger-style indented subdirectives, just for
@@ -1183,7 +1201,7 @@
 
 File: hledger_journal.info,  Node: Account types,  Next: Account display order,  Prev: Account subdirectives,  Up: Declaring accounts
 
-1.12.7.3 Account types
+1.12.8.3 Account types
 ......................
 
 hledger recognises five types (or classes) of account: Asset, Liability,
@@ -1228,7 +1246,7 @@
 
 File: hledger_journal.info,  Node: Account display order,  Prev: Account types,  Up: Declaring accounts
 
-1.12.7.4 Account display order
+1.12.8.4 Account display order
 ..............................
 
 Account directives also set the order in which accounts are displayed,
@@ -1274,7 +1292,7 @@
 
 File: hledger_journal.info,  Node: Rewriting accounts,  Next: Default parent account,  Prev: Declaring accounts,  Up: Directives
 
-1.12.8 Rewriting accounts
+1.12.9 Rewriting accounts
 -------------------------
 
 You can define account alias rules which rewrite your account names, or
@@ -1298,12 +1316,13 @@
 * Basic aliases::
 * Regex aliases::
 * Combining aliases::
+* Aliases and multiple files::
 * end aliases::
 
 
 File: hledger_journal.info,  Node: Basic aliases,  Next: Regex aliases,  Up: Rewriting accounts
 
-1.12.8.1 Basic aliases
+1.12.9.1 Basic aliases
 ......................
 
 To set an account alias, use the 'alias' directive in your journal file.
@@ -1326,7 +1345,7 @@
 
 File: hledger_journal.info,  Node: Regex aliases,  Next: Combining aliases,  Prev: Basic aliases,  Up: Rewriting accounts
 
-1.12.8.2 Regex aliases
+1.12.9.2 Regex aliases
 ......................
 
 There is also a more powerful variant that uses a regular expression,
@@ -1349,9 +1368,9 @@
 whitespace.
 
 
-File: hledger_journal.info,  Node: Combining aliases,  Next: end aliases,  Prev: Regex aliases,  Up: Rewriting accounts
+File: hledger_journal.info,  Node: Combining aliases,  Next: Aliases and multiple files,  Prev: Regex aliases,  Up: Rewriting accounts
 
-1.12.8.3 Combining aliases
+1.12.9.3 Combining aliases
 ..........................
 
 You can define as many aliases as you like, using journal directives
@@ -1386,9 +1405,41 @@
 which aliases are being applied when.
 
 
-File: hledger_journal.info,  Node: end aliases,  Prev: Combining aliases,  Up: Rewriting accounts
+File: hledger_journal.info,  Node: Aliases and multiple files,  Next: end aliases,  Prev: Combining aliases,  Up: Rewriting accounts
 
-1.12.8.4 'end aliases'
+1.12.9.4 Aliases and multiple files
+...................................
+
+As explained at Directives and multiple files, 'alias' directives do not
+affect parent or sibling files.  Eg in this command,
+
+hledger -f a.aliases -f b.journal
+
+   account aliases defined in a.aliases will not affect b.journal.
+Including the aliases doesn't work either:
+
+include a.aliases
+
+2020-01-01  ; not affected by a.aliases
+  foo  1
+  bar
+
+   This means that account aliases should usually be declared at the
+start of your top-most file, like this:
+
+alias foo=Foo
+alias bar=Bar
+
+2020-01-01  ; affected by aliases above
+  foo  1
+  bar
+
+include c.journal  ; also affected
+
+
+File: hledger_journal.info,  Node: end aliases,  Prev: Aliases and multiple files,  Up: Rewriting accounts
+
+1.12.9.5 'end aliases'
 ......................
 
 You can clear (forget) all currently defined aliases with the 'end
@@ -1399,8 +1450,8 @@
 
 File: hledger_journal.info,  Node: Default parent account,  Prev: Rewriting accounts,  Up: Directives
 
-1.12.9 Default parent account
------------------------------
+1.12.10 Default parent account
+------------------------------
 
 You can specify a parent account which will be prepended to all accounts
 within a section of the journal.  Use the 'apply account' and 'end apply
@@ -1438,7 +1489,7 @@
 parent account.
 
 
-File: hledger_journal.info,  Node: Periodic transactions,  Next: Auto postings / transaction modifiers,  Prev: Directives,  Up: Transactions
+File: hledger_journal.info,  Node: Periodic transactions,  Next: Auto postings,  Prev: Directives,  Up: Transactions
 
 1.13 Periodic transactions
 ==========================
@@ -1600,29 +1651,26 @@
 Forecasting.
 
 
-File: hledger_journal.info,  Node: Auto postings / transaction modifiers,  Prev: Periodic transactions,  Up: Transactions
+File: hledger_journal.info,  Node: Auto postings,  Prev: Periodic transactions,  Up: Transactions
 
-1.14 Auto postings / transaction modifiers
-==========================================
+1.14 Auto postings
+==================
 
-Transaction modifier rules, AKA auto posting rules, describe changes to
-be applied automatically to certain matched transactions.  Currently
-just one kind of change is possible - adding extra postings, which we
-call "automated postings" or just "auto postings".  These rules become
-active when you use the '--auto' flag.
+"Automated postings" or "auto postings" are extra postings which get
+added automatically to transactions which match certain queries, defined
+by "auto posting rules", when you use the '--auto' flag.
 
-   A transaction modifier rule looks much like a normal transaction
-except the first line is an equals sign followed by a query that matches
-certain postings (mnemonic: '=' suggests matching).  And each "posting"
-is actually a posting-generating rule:
+   An auto posting rule looks a bit like a transaction:
 
 = QUERY
     ACCOUNT  AMOUNT
-    ACCOUNT  [AMOUNT]
     ...
+    ACCOUNT  [AMOUNT]
 
-   These posting-generating rules look like normal postings, except the
-amount can be:
+   except the first line is an equals sign (mnemonic: '=' suggests
+matching), followed by a query (which matches existing postings), and
+each "posting" line describes a posting to be generated, and the posting
+amounts can be:
 
    * a normal amount with a commodity symbol, eg '$2'.  This will be
      used as-is.
@@ -1635,17 +1683,13 @@
      and symbol S). The matched posting's amount will be multiplied by
      N, and its commodity symbol will be replaced with S.
 
-   A query term containing spaces must be enclosed in single or double
+   Any query term containing spaces must be enclosed in single or double
 quotes, as on the command line.  Eg, note the quotes around the second
 query term below:
 
 = expenses:groceries 'expenses:dining out'
     (budget:funds:dining out)                 *-1
 
-   These rules have global effect - a rule appearing anywhere in your
-data can potentially affect any transaction, including transactions
-recorded above it or in another file.
-
    Some examples:
 
 ; every time I buy food, schedule a dollar donation
@@ -1679,14 +1723,25 @@
 
 * Menu:
 
+* Auto postings and multiple files::
 * Auto postings and dates::
 * Auto postings and transaction balancing / inferred amounts / balance assertions::
 * Auto posting tags::
 
 
-File: hledger_journal.info,  Node: Auto postings and dates,  Next: Auto postings and transaction balancing / inferred amounts / balance assertions,  Up: Auto postings / transaction modifiers
+File: hledger_journal.info,  Node: Auto postings and multiple files,  Next: Auto postings and dates,  Up: Auto postings
 
-1.14.1 Auto postings and dates
+1.14.1 Auto postings and multiple files
+---------------------------------------
+
+An auto posting rule can affect any transaction in the current file, or
+in any parent file or child file.  Note, currently it will not affect
+sibling files (when multiple '-f'/'--file' are used - see #1212).
+
+
+File: hledger_journal.info,  Node: Auto postings and dates,  Next: Auto postings and transaction balancing / inferred amounts / balance assertions,  Prev: Auto postings and multiple files,  Up: Auto postings
+
+1.14.2 Auto postings and dates
 ------------------------------
 
 A posting date (or secondary date) in the matched posting, or (taking
@@ -1694,13 +1749,12 @@
 used in the generated posting.
 
 
-File: hledger_journal.info,  Node: Auto postings and transaction balancing / inferred amounts / balance assertions,  Next: Auto posting tags,  Prev: Auto postings and dates,  Up: Auto postings / transaction modifiers
+File: hledger_journal.info,  Node: Auto postings and transaction balancing / inferred amounts / balance assertions,  Next: Auto posting tags,  Prev: Auto postings and dates,  Up: Auto postings
 
-1.14.2 Auto postings and transaction balancing / inferred amounts /
+1.14.3 Auto postings and transaction balancing / inferred amounts /
 -------------------------------------------------------------------
 
-balance assertions Currently, transaction modifiers are applied / auto
-postings are added:
+balance assertions Currently, auto postings are added:
 
    * after missing amounts are inferred, and transactions are checked
      for balancedness,
@@ -1711,12 +1765,12 @@
 for background.
 
 
-File: hledger_journal.info,  Node: Auto posting tags,  Prev: Auto postings and transaction balancing / inferred amounts / balance assertions,  Up: Auto postings / transaction modifiers
+File: hledger_journal.info,  Node: Auto posting tags,  Prev: Auto postings and transaction balancing / inferred amounts / balance assertions,  Up: Auto postings
 
-1.14.3 Auto posting tags
+1.14.4 Auto posting tags
 ------------------------
 
-Postings added by transaction modifiers will have some extra tags:
+Automated postings will have some extra tags:
 
    * 'generated-posting:= QUERY' - shows this was generated by an auto
      posting rule, and the query
@@ -1725,8 +1779,8 @@
      "just now", rather than generated in the past and saved to the
      journal.
 
-   Also, any transaction that has been changed by transaction modifier
-rules will have these tags added:
+   Also, any transaction that has been changed by auto posting rules
+will have these tags added:
 
    * 'modified:' - this transaction was modified
    * '_modified:' - a hidden tag not appearing in the comment; this
@@ -1735,116 +1789,122 @@
 
 Tag Table:
 Node: Top76
-Node: Transactions1869
-Ref: #transactions1961
-Node: Dates3150
-Ref: #dates3249
-Node: Simple dates3314
-Ref: #simple-dates3440
-Node: Secondary dates3949
-Ref: #secondary-dates4103
-Node: Posting dates5439
-Ref: #posting-dates5568
-Node: Status6940
-Ref: #status7061
-Node: Description8769
-Ref: #description8903
-Node: Payee and note9223
-Ref: #payee-and-note9337
-Node: Comments9672
-Ref: #comments9798
-Node: Tags10992
-Ref: #tags11107
-Node: Postings12500
-Ref: #postings12628
-Node: Virtual Postings13654
-Ref: #virtual-postings13771
-Node: Account names15076
-Ref: #account-names15217
-Node: Amounts15704
-Ref: #amounts15843
-Node: Digit group marks16775
-Ref: #digit-group-marks16923
-Node: Amount display style17861
-Ref: #amount-display-style18015
-Node: Transaction prices19176
-Ref: #transaction-prices19342
-Node: Balance Assertions21608
-Ref: #balance-assertions21788
-Node: Assertions and ordering22821
-Ref: #assertions-and-ordering23009
-Node: Assertions and included files23709
-Ref: #assertions-and-included-files23952
-Node: Assertions and multiple -f options24285
-Ref: #assertions-and-multiple--f-options24541
-Node: Assertions and commodities24673
-Ref: #assertions-and-commodities24905
-Node: Assertions and prices26062
-Ref: #assertions-and-prices26276
-Node: Assertions and subaccounts26716
-Ref: #assertions-and-subaccounts26945
-Node: Assertions and virtual postings27269
-Ref: #assertions-and-virtual-postings27511
-Node: Assertions and precision27653
-Ref: #assertions-and-precision27846
-Node: Balance Assignments28113
-Ref: #balance-assignments28287
-Node: Balance assignments and prices29451
-Ref: #balance-assignments-and-prices29623
-Node: Directives29847
-Ref: #directives30006
-Node: Comment blocks35654
-Ref: #comment-blocks35799
-Node: Including other files35975
-Ref: #including-other-files36155
-Node: Default year36563
-Ref: #default-year36732
-Node: Declaring commodities37139
-Ref: #declaring-commodities37322
-Node: Default commodity38995
-Ref: #default-commodity39171
-Node: Market prices40060
-Ref: #market-prices40225
-Node: Declaring accounts41066
-Ref: #declaring-accounts41242
-Node: Account comments42167
-Ref: #account-comments42330
-Node: Account subdirectives42754
-Ref: #account-subdirectives42949
-Node: Account types43262
-Ref: #account-types43446
-Node: Account display order45085
-Ref: #account-display-order45255
-Node: Rewriting accounts46406
-Ref: #rewriting-accounts46591
-Node: Basic aliases47317
-Ref: #basic-aliases47463
-Node: Regex aliases48167
-Ref: #regex-aliases48339
-Node: Combining aliases49057
-Ref: #combining-aliases49235
-Node: end aliases50511
-Ref: #end-aliases50659
-Node: Default parent account50760
-Ref: #default-parent-account50926
-Node: Periodic transactions51810
-Ref: #periodic-transactions52009
-Node: Periodic rule syntax53881
-Ref: #periodic-rule-syntax54087
-Node: Two spaces between period expression and description!54791
-Ref: #two-spaces-between-period-expression-and-description55110
-Node: Forecasting with periodic transactions55794
-Ref: #forecasting-with-periodic-transactions56099
-Node: Budgeting with periodic transactions58125
-Ref: #budgeting-with-periodic-transactions58364
-Node: Auto postings / transaction modifiers58813
-Ref: #auto-postings-transaction-modifiers59025
-Node: Auto postings and dates61521
-Ref: #auto-postings-and-dates61778
-Node: Auto postings and transaction balancing / inferred amounts / balance assertions61953
-Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions62328
-Node: Auto posting tags62706
-Ref: #auto-posting-tags62945
+Node: Transactions1877
+Ref: #transactions1969
+Node: Dates3134
+Ref: #dates3233
+Node: Simple dates3298
+Ref: #simple-dates3424
+Node: Secondary dates3933
+Ref: #secondary-dates4087
+Node: Posting dates5423
+Ref: #posting-dates5552
+Node: Status6924
+Ref: #status7045
+Node: Description8753
+Ref: #description8887
+Node: Payee and note9207
+Ref: #payee-and-note9321
+Node: Comments9656
+Ref: #comments9782
+Node: Tags10976
+Ref: #tags11091
+Node: Postings12484
+Ref: #postings12612
+Node: Virtual Postings13638
+Ref: #virtual-postings13755
+Node: Account names15060
+Ref: #account-names15201
+Node: Amounts15688
+Ref: #amounts15827
+Node: Digit group marks16741
+Ref: #digit-group-marks16889
+Node: Amount display style17827
+Ref: #amount-display-style17981
+Node: Transaction prices19142
+Ref: #transaction-prices19308
+Node: Balance Assertions21574
+Ref: #balance-assertions21754
+Node: Assertions and ordering22787
+Ref: #assertions-and-ordering22975
+Node: Assertions and included files23675
+Ref: #assertions-and-included-files23918
+Node: Assertions and multiple -f options24251
+Ref: #assertions-and-multiple--f-options24507
+Node: Assertions and commodities24639
+Ref: #assertions-and-commodities24871
+Node: Assertions and prices26028
+Ref: #assertions-and-prices26242
+Node: Assertions and subaccounts26682
+Ref: #assertions-and-subaccounts26911
+Node: Assertions and virtual postings27235
+Ref: #assertions-and-virtual-postings27477
+Node: Assertions and precision27619
+Ref: #assertions-and-precision27812
+Node: Balance Assignments28079
+Ref: #balance-assignments28253
+Node: Balance assignments and prices29417
+Ref: #balance-assignments-and-prices29589
+Node: Directives29813
+Ref: #directives29972
+Node: Directives and multiple files35653
+Ref: #directives-and-multiple-files35836
+Node: Comment blocks36500
+Ref: #comment-blocks36683
+Node: Including other files36859
+Ref: #including-other-files37039
+Node: Default year37447
+Ref: #default-year37616
+Node: Declaring commodities38023
+Ref: #declaring-commodities38206
+Node: Default commodity39879
+Ref: #default-commodity40055
+Node: Market prices40944
+Ref: #market-prices41109
+Node: Declaring accounts41950
+Ref: #declaring-accounts42126
+Node: Account comments43051
+Ref: #account-comments43214
+Node: Account subdirectives43638
+Ref: #account-subdirectives43833
+Node: Account types44146
+Ref: #account-types44330
+Node: Account display order45969
+Ref: #account-display-order46139
+Node: Rewriting accounts47290
+Ref: #rewriting-accounts47475
+Node: Basic aliases48232
+Ref: #basic-aliases48378
+Node: Regex aliases49082
+Ref: #regex-aliases49254
+Node: Combining aliases49972
+Ref: #combining-aliases50165
+Node: Aliases and multiple files51441
+Ref: #aliases-and-multiple-files51650
+Node: end aliases52229
+Ref: #end-aliases52386
+Node: Default parent account52487
+Ref: #default-parent-account52655
+Node: Periodic transactions53539
+Ref: #periodic-transactions53714
+Node: Periodic rule syntax55586
+Ref: #periodic-rule-syntax55792
+Node: Two spaces between period expression and description!56496
+Ref: #two-spaces-between-period-expression-and-description56815
+Node: Forecasting with periodic transactions57499
+Ref: #forecasting-with-periodic-transactions57804
+Node: Budgeting with periodic transactions59830
+Ref: #budgeting-with-periodic-transactions60069
+Node: Auto postings60518
+Ref: #auto-postings60658
+Node: Auto postings and multiple files62837
+Ref: #auto-postings-and-multiple-files63041
+Node: Auto postings and dates63250
+Ref: #auto-postings-and-dates63524
+Node: Auto postings and transaction balancing / inferred amounts / balance assertions63699
+Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions64050
+Node: Auto posting tags64392
+Ref: #auto-posting-tags64607
 
 End Tag Table
 
diff --git a/embeddedfiles/hledger_journal.txt b/embeddedfiles/hledger_journal.txt
--- a/embeddedfiles/hledger_journal.txt
+++ b/embeddedfiles/hledger_journal.txt
@@ -370,7 +370,7 @@
               1E-6
               EUR 1E3
 
-       A decimal mark (decimal point) can be written with a period or a comma:
+       A decimal mark can be written as a period or a comma:
 
               1.23
               1,23456780000009
@@ -709,6 +709,11 @@
                                         dates                          line/included   en-
                                                                        tries until end  of
                                                                        current file
+       =                                declare   an   auto  posting   all entries in par-
+                                        rule,  adding  postings   to   ent/current/child
+                                        other transactions             files (but not sib-
+                                                                       ling   files,   see
+                                                                       #1212)
 
        And some definitions:
 
@@ -718,12 +723,10 @@
        number   how to interpret numbers when parsing journal entries (the iden-
        nota-    tity  of the decimal separator character).  (Currently each com-
        tion     modity can have its own notation, even in the same file.)
+
        dis-     how to display amounts of a commodity in  reports  (symbol  side
        play     and spacing, digit groups, decimal separator, decimal places)
        style
-
-
-
        direc-   which  entries  and  (when there are multiple files) which files
        tive     are affected by a directive
        scope
@@ -732,34 +735,42 @@
        affect, and whether they are focussed on input (parsing) or output (re-
        ports).  Some directives have multiple effects.
 
-       If you have a journal made up of multiple files, or  pass  multiple  -f
-       options  on  the  command line, note that directives which affect input
-       typically last only until the end of their defining  file.   This  pro-
-       vides more simplicity and predictability, eg reports are not changed by
-       writing file options in a different order.  It  can  be  surprising  at
-       times though.
+   Directives and multiple files
+       If you use  multiple  -f/--file  options,  or  the  include  directive,
+       hledger  will  process  multiple input files.  But note that directives
+       which affect input (see above) typically last only until the end of the
+       file in which they occur.
 
+       This may seem inconvenient, but it's intentional; it makes reports sta-
+       ble and deterministic, independent of the order  of  input.   Otherwise
+       you  could see different numbers if you happened to write -f options in
+       a different order, or if you moved includes around  while  cleaning  up
+       your files.
+
+       It  can  be  surprising though; for example, it means that alias direc-
+       tives do not affect parent or sibling files (see below).
+
    Comment blocks
-       A  line  containing just comment starts a commented region of the file,
+       A line containing just comment starts a commented region of  the  file,
        and a line containing just end comment (or the end of the current file)
        ends it.  See also comments.
 
    Including other files
-       You  can  pull in the content of additional files by writing an include
+       You can pull in the content of additional files by writing  an  include
        directive, like this:
 
               include path/to/file.journal
 
-       If the path does not begin with a slash, it is relative to the  current
-       file.   The  include  file  path may contain common glob patterns (e.g.
+       If  the path does not begin with a slash, it is relative to the current
+       file.  The include file path may contain  common  glob  patterns  (e.g.
        *).
 
-       The include directive can only be used in journal files.   It  can  in-
+       The  include  directive  can only be used in journal files.  It can in-
        clude journal, timeclock or timedot files, but not CSV files.
 
    Default year
-       You  can set a default year to be used for subsequent dates which don't
-       specify a year.  This is a line beginning with Y followed by the  year.
+       You can set a default year to be used for subsequent dates which  don't
+       specify  a year.  This is a line beginning with Y followed by the year.
        Eg:
 
               Y2009  ; set default year to 2009
@@ -781,19 +792,19 @@
    Declaring commodities
        The commodity directive has several functions:
 
-       1. It  declares  commodities which may be used in the journal.  This is
+       1. It declares commodities which may be used in the journal.   This  is
           currently not enforced, but can serve as documentation.
 
-       2. It declares what decimal mark character (period or comma) to  expect
-          when  parsing  input  -  useful to disambiguate international number
-          formats in your data.  (Without this, hledger will parse both  1,000
+       2. It  declares what decimal mark character (period or comma) to expect
+          when parsing input - useful  to  disambiguate  international  number
+          formats  in your data.  (Without this, hledger will parse both 1,000
           and 1.000 as 1).
 
-       3. It  declares the amount display style to use in output - decimal and
+       3. It declares the amount display style to use in output - decimal  and
           digit group marks, number of decimal places, symbol placement etc.
 
-       You are likely to run into one of the problems solved by commodity  di-
-       rectives,  sooner or later, so it's a good idea to just always use them
+       You  are likely to run into one of the problems solved by commodity di-
+       rectives, sooner or later, so it's a good idea to just always use  them
        to declare your commodities.
 
        A commodity directive is just the word commodity followed by an amount.
@@ -806,8 +817,8 @@
               ; separating thousands with comma.
               commodity 1,000.0000 AAAA
 
-       or  on  multiple lines, using the "format" subdirective.  (In this case
-       the commodity symbol appears twice and  should  be  the  same  in  both
+       or on multiple lines, using the "format" subdirective.  (In  this  case
+       the  commodity  symbol  appears  twice  and  should be the same in both
        places.):
 
               ; commodity SYMBOL
@@ -820,19 +831,19 @@
                 format INR 1,00,00,000.00
 
        The quantity of the amount does not matter; only the format is signifi-
-       cant.  The number must include a decimal mark: either  a  period  or  a
+       cant.   The  number  must  include a decimal mark: either a period or a
        comma, followed by 0 or more decimal digits.
 
    Default commodity
-       The  D directive sets a default commodity, to be used for amounts with-
+       The D directive sets a default commodity, to be used for amounts  with-
        out a commodity symbol (ie, plain numbers).  This commodity will be ap-
        plied to all subsequent commodity-less amounts, or until the next D di-
        rective.  (Note, this is different from Ledger's D.)
 
-       For compatibility/historical reasons, D also acts like a commodity  di-
+       For  compatibility/historical reasons, D also acts like a commodity di-
        rective, setting the commodity's display style (for output) and decimal
        mark (for parsing input).  As with commodity, the amount must always be
-       written  with a decimal mark (period or comma).  If both directives are
+       written with a decimal mark (period or comma).  If both directives  are
        used, commodity's style takes precedence.
 
        The syntax is D AMOUNT.  Eg:
@@ -846,9 +857,9 @@
                 b
 
    Market prices
-       The P directive declares a market price, which is an exchange rate  be-
-       tween  two  commodities on a certain date.  (In Ledger, they are called
-       "historical prices".) These are often obtained from a  stock  exchange,
+       The  P directive declares a market price, which is an exchange rate be-
+       tween two commodities on a certain date.  (In Ledger, they  are  called
+       "historical  prices".)  These are often obtained from a stock exchange,
        cryptocurrency exchange, or the foreign exchange market.
 
        Here is the format:
@@ -859,16 +870,16 @@
 
        o COMMODITYA is the symbol of the commodity being priced
 
-       o COMMODITYBAMOUNT  is an amount (symbol and quantity) in a second com-
+       o COMMODITYBAMOUNT is an amount (symbol and quantity) in a second  com-
          modity, giving the price in commodity B of one unit of commodity A.
 
-       These two market price directives say that one euro was worth  1.35  US
+       These  two  market price directives say that one euro was worth 1.35 US
        dollars during 2009, and $1.40 from 2010 onward:
 
               P 2009/1/1 EUR $1.35
               P 2010/1/1 EUR $1.40
 
-       The  -V/--value flag can be used to convert reported amounts to another
+       The -V/--value flag can be used to convert reported amounts to  another
        commodity using these prices.
 
    Declaring accounts
@@ -878,20 +889,20 @@
        o They can document your intended chart of accounts, providing a refer-
          ence.
 
-       o They can store extra information  about  accounts  (account  numbers,
+       o They  can  store  extra  information about accounts (account numbers,
          notes, etc.)
 
-       o They  can  help  hledger know your accounts' types (asset, liability,
-         equity, revenue, expense), useful for reports like  balancesheet  and
+       o They can help hledger know your accounts'  types  (asset,  liability,
+         equity,  revenue,  expense), useful for reports like balancesheet and
          incomestatement.
 
-       o They  control  account  display order in reports, allowing non-alpha-
+       o They control account display order in  reports,  allowing  non-alpha-
          betic sorting (eg Revenues to appear above Expenses).
 
-       o They help with account name completion in the add  command,  hledger-
+       o They  help  with account name completion in the add command, hledger-
          iadd, hledger-web, ledger-mode etc.
 
-       The  simplest form is just the word account followed by a hledger-style
+       The simplest form is just the word account followed by a  hledger-style
        account name, eg:
 
               account assets:bank:checking
@@ -899,7 +910,7 @@
    Account comments
        Comments, beginning with a semicolon, can be added:
 
-       o on the same line, after two or more spaces (because ; is  allowed  in
+       o on  the  same line, after two or more spaces (because ; is allowed in
          account names)
 
        o on the next lines, indented
@@ -913,7 +924,7 @@
        Same-line comments are not supported by Ledger, or hledger <1.13.
 
    Account subdirectives
-       We  also  allow  (and ignore) Ledger-style indented subdirectives, just
+       We also allow (and ignore) Ledger-style  indented  subdirectives,  just
        for compatibility.:
 
               account assets:bank:checking
@@ -926,18 +937,18 @@
                 [LEDGER-STYLE SUBDIRECTIVES, IGNORED]
 
    Account types
-       hledger recognises five types (or classes) of account:  Asset,  Liabil-
-       ity,  Equity, Revenue, Expense.  This is used by a few accounting-aware
+       hledger  recognises  five types (or classes) of account: Asset, Liabil-
+       ity, Equity, Revenue, Expense.  This is used by a few  accounting-aware
        reports such as balancesheet, incomestatement and cashflow.
 
    Auto-detected account types
        If you name your top-level accounts with some variation of assets, lia-
-       bilities/debts,  equity,  revenues/income, or expenses, their types are
+       bilities/debts, equity, revenues/income, or expenses, their  types  are
        detected automatically.
 
    Account types declared with tags
-       More generally, you can declare an account's type with an  account  di-
-       rective,  by  writing  a type: tag in a comment, followed by one of the
+       More  generally,  you can declare an account's type with an account di-
+       rective, by writing a type: tag in a comment, followed by  one  of  the
        words Asset, Liability, Equity, Revenue, Expense, or one of the letters
        ALERX (case insensitive):
 
@@ -948,8 +959,8 @@
               account expenses     ; type:Expense
 
    Account types declared with account type codes
-       Or,  you can write one of those letters separated from the account name
-       by two or more spaces, but this should probably  be  considered  depre-
+       Or, you can write one of those letters separated from the account  name
+       by  two  or  more spaces, but this should probably be considered depre-
        cated as of hledger 1.13:
 
               account assets       A
@@ -959,7 +970,7 @@
               account expenses     X
 
    Overriding auto-detected types
-       If  you  ever override the types of those auto-detected english account
+       If you ever override the types of those auto-detected  english  account
        names mentioned above, you might need to help the reports a bit.  Eg:
 
               ; make "liabilities" not have the liability type - who knows why
@@ -970,8 +981,8 @@
               account -            ; type:L
 
    Account display order
-       Account directives also set the order in which accounts are  displayed,
-       eg  in  reports,  the  hledger-ui  accounts screen, and the hledger-web
+       Account  directives also set the order in which accounts are displayed,
+       eg in reports, the hledger-ui  accounts  screen,  and  the  hledger-web
        sidebar.  By default accounts are listed in alphabetical order.  But if
        you have these account directives in the journal:
 
@@ -993,20 +1004,20 @@
 
        Undeclared accounts, if any, are displayed last, in alphabetical order.
 
-       Note that sorting is done at each level of  the  account  tree  (within
-       each  group of sibling accounts under the same parent).  And currently,
+       Note  that  sorting  is  done at each level of the account tree (within
+       each group of sibling accounts under the same parent).  And  currently,
        this directive:
 
               account other:zoo
 
-       would influence the position of zoo among other's subaccounts, but  not
+       would  influence the position of zoo among other's subaccounts, but not
        the position of other among the top-level accounts.  This means:
 
-       o you  will  sometimes declare parent accounts (eg account other above)
+       o you will sometimes declare parent accounts (eg account  other  above)
          that you don't intend to post to, just to customize their display or-
          der
 
-       o sibling  accounts  stay together (you couldn't display x:y in between
+       o sibling accounts stay together (you couldn't display x:y  in  between
          a:b and a:c).
 
    Rewriting accounts
@@ -1024,14 +1035,14 @@
        o customising reports
 
        Account aliases also rewrite account names in account directives.  They
-       do not affect account names being entered via hledger add  or  hledger-
+       do  not  affect account names being entered via hledger add or hledger-
        web.
 
        See also Rewrite account names.
 
    Basic aliases
-       To  set an account alias, use the alias directive in your journal file.
-       This affects all subsequent journal entries in the current file or  its
+       To set an account alias, use the alias directive in your journal  file.
+       This  affects all subsequent journal entries in the current file or its
        included files.  The spaces around the = are optional:
 
               alias OLD = NEW
@@ -1039,49 +1050,49 @@
        Or, you can use the --alias 'OLD=NEW' option on the command line.  This
        affects all entries.  It's useful for trying out aliases interactively.
 
-       OLD and NEW are case sensitive full account names.   hledger  will  re-
-       place  any occurrence of the old account name with the new one.  Subac-
+       OLD  and  NEW  are case sensitive full account names.  hledger will re-
+       place any occurrence of the old account name with the new one.   Subac-
        counts are also affected.  Eg:
 
               alias checking = assets:bank:wells fargo:checking
               ; rewrites "checking" to "assets:bank:wells fargo:checking", or "checking:a" to "assets:bank:wells fargo:checking:a"
 
    Regex aliases
-       There is also a more powerful variant that uses a  regular  expression,
+       There  is  also a more powerful variant that uses a regular expression,
        indicated by the forward slashes:
 
               alias /REGEX/ = REPLACEMENT
 
        or --alias '/REGEX/=REPLACEMENT'.
 
-       REGEX  is  a  case-insensitive regular expression.  Anywhere it matches
-       inside an account name, the matched part will be replaced  by  REPLACE-
-       MENT.   If REGEX contains parenthesised match groups, these can be ref-
+       REGEX is a case-insensitive regular expression.   Anywhere  it  matches
+       inside  an  account name, the matched part will be replaced by REPLACE-
+       MENT.  If REGEX contains parenthesised match groups, these can be  ref-
        erenced by the usual numeric backreferences in REPLACEMENT.  Eg:
 
               alias /^(.+):bank:([^:]+)(.*)/ = \1:\2 \3
               ; rewrites "assets:bank:wells fargo:checking" to  "assets:wells fargo checking"
 
-       Also note that REPLACEMENT continues to the end of line (or on  command
-       line,  to  end  of  option argument), so it can contain trailing white-
+       Also  note that REPLACEMENT continues to the end of line (or on command
+       line, to end of option argument), so it  can  contain  trailing  white-
        space.
 
    Combining aliases
-       You can define as many aliases as you like,  using  journal  directives
+       You  can  define  as many aliases as you like, using journal directives
        and/or command line options.
 
-       Recursive  aliases  -  where an account name is rewritten by one alias,
-       then by another alias, and so on - are allowed.  Each  alias  sees  the
+       Recursive aliases - where an account name is rewritten  by  one  alias,
+       then  by  another  alias, and so on - are allowed.  Each alias sees the
        effect of previously applied aliases.
 
-       In  such  cases it can be important to understand which aliases will be
-       applied and in which order.  For (each account name  in)  each  journal
+       In such cases it can be important to understand which aliases  will  be
+       applied  and  in  which order.  For (each account name in) each journal
        entry, we apply:
 
-       1. alias  directives  preceding the journal entry, most recently parsed
+       1. alias directives preceding the journal entry, most  recently  parsed
           first (ie, reading upward from the journal entry, bottom to top)
 
-       2. --alias options, in the order they  appeared  on  the  command  line
+       2. --alias  options,  in  the  order  they appeared on the command line
           (left to right).
 
        In other words, for (an account name in) a given journal entry:
@@ -1092,13 +1103,40 @@
 
        o aliases defined after/below the entry do not affect it.
 
-       This  gives nearby aliases precedence over distant ones, and helps pro-
-       vide semantic stability - aliases will keep working the same way  inde-
+       This gives nearby aliases precedence over distant ones, and helps  pro-
+       vide  semantic stability - aliases will keep working the same way inde-
        pendent of which files are being read and in which order.
 
-       In  case  of  trouble,  adding  --debug=6 to the command line will show
+       In case of trouble, adding --debug=6 to  the  command  line  will  show
        which aliases are being applied when.
 
+   Aliases and multiple files
+       As  explained at Directives and multiple files, alias directives do not
+       affect parent or sibling files.  Eg in this command,
+
+              hledger -f a.aliases -f b.journal
+
+       account aliases defined in a.aliases will not  affect  b.journal.   In-
+       cluding the aliases doesn't work either:
+
+              include a.aliases
+
+              2020-01-01  ; not affected by a.aliases
+                foo  1
+                bar
+
+       This means that account aliases should usually be declared at the start
+       of your top-most file, like this:
+
+              alias foo=Foo
+              alias bar=Bar
+
+              2020-01-01  ; affected by aliases above
+                foo  1
+                bar
+
+              include c.journal  ; also affected
+
    end aliases
        You can clear (forget) all  currently  defined  aliases  with  the  end
        aliases directive:
@@ -1278,51 +1316,44 @@
        For more details, see: balance: Budget report and Budgeting  and  Fore-
        casting.
 
-   Auto postings / transaction modifiers
-       Transaction modifier rules, AKA auto posting rules, describe changes to
-       be applied automatically to certain  matched  transactions.   Currently
-       just  one  kind of change is possible - adding extra postings, which we
-       call "automated postings" or just "auto postings".  These rules  become
-       active when you use the --auto flag.
+   Auto postings
+       "Automated  postings"  or  "auto postings" are extra postings which get
+       added automatically to transactions which match  certain  queries,  de-
+       fined by "auto posting rules", when you use the --auto flag.
 
-       A transaction modifier rule looks much like a normal transaction except
-       the first line is an equals sign followed by a query that matches  cer-
-       tain  postings  (mnemonic: = suggests matching).  And each "posting" is
-       actually a posting-generating rule:
+       An auto posting rule looks a bit like a transaction:
 
               = QUERY
                   ACCOUNT  AMOUNT
-                  ACCOUNT  [AMOUNT]
                   ...
+                  ACCOUNT  [AMOUNT]
 
-       These posting-generating rules look like normal  postings,  except  the
-       amount can be:
+       except  the  first  line is an equals sign (mnemonic: = suggests match-
+       ing), followed by a query (which matches existing postings),  and  each
+       "posting"  line  describes  a  posting to be generated, and the posting
+       amounts can be:
 
-       o a  normal  amount  with a commodity symbol, eg $2.  This will be used
+       o a normal amount with a commodity symbol, eg $2.  This  will  be  used
          as-is.
 
        o a number, eg 2.  The commodity symbol (if any) from the matched post-
          ing will be added to this.
 
-       o a  numeric  multiplier,  eg  *2 (a star followed by a number N).  The
+       o a numeric multiplier, eg *2 (a star followed by  a  number  N).   The
          matched posting's amount (and total price, if any) will be multiplied
          by N.
 
-       o a  multiplier  with a commodity symbol, eg *$2 (a star, number N, and
+       o a multiplier with a commodity symbol, eg *$2 (a star, number  N,  and
          symbol S).  The matched posting's amount will be multiplied by N, and
          its commodity symbol will be replaced with S.
 
-       A  query  term  containing  spaces must be enclosed in single or double
-       quotes, as on the command line.  Eg, note the quotes around the  second
+       Any query term containing spaces must be enclosed in single  or  double
+       quotes,  as on the command line.  Eg, note the quotes around the second
        query term below:
 
               = expenses:groceries 'expenses:dining out'
                   (budget:funds:dining out)                 *-1
 
-       These rules have global effect - a rule appearing anywhere in your data
-       can potentially affect any transaction, including transactions recorded
-       above it or in another file.
-
        Some examples:
 
               ; every time I buy food, schedule a dollar donation
@@ -1354,36 +1385,41 @@
                   assets:checking:gifts     -$20
                   assets:checking            $20
 
+   Auto postings and multiple files
+       An auto posting rule can affect any transaction in the current file, or
+       in  any  parent file or child file.  Note, currently it will not affect
+       sibling files (when multiple -f/--file are used - see #1212).
+
    Auto postings and dates
-       A  posting  date (or secondary date) in the matched posting, or (taking
-       precedence) a posting date in the auto posting rule itself,  will  also
+       A posting date (or secondary date) in the matched posting,  or  (taking
+       precedence)  a  posting date in the auto posting rule itself, will also
        be used in the generated posting.
 
    Auto postings and transaction balancing / inferred amounts / balance asser-
        tions
-       Currently, transaction modifiers are applied / auto postings are added:
+       Currently, auto postings are added:
 
-       o after missing amounts are inferred, and transactions are checked  for
+       o after  missing amounts are inferred, and transactions are checked for
          balancedness,
 
        o but before balance assertions are checked.
 
-       Note  this  means that journal entries must be balanced both before and
+       Note this means that journal entries must be balanced both  before  and
        after auto postings are added.  This changed in hledger 1.12+; see #893
        for background.
 
    Auto posting tags
-       Postings added by transaction modifiers will have some extra tags:
+       Automated postings will have some extra tags:
 
        o generated-posting:= QUERY - shows this was generated by an auto post-
          ing rule, and the query
 
-       o _generated-posting:= QUERY - a hidden tag, which does not  appear  in
+       o _generated-posting:=  QUERY  - a hidden tag, which does not appear in
          hledger's output.  This can be used to match postings generated "just
          now", rather than generated in the past and saved to the journal.
 
-       Also, any transaction that has been  changed  by  transaction  modifier
-       rules will have these tags added:
+       Also,  any transaction that has been changed by auto posting rules will
+       have these tags added:
 
        o modified: - this transaction was modified
 
@@ -1393,7 +1429,7 @@
 
 
 REPORTING BUGS
-       Report bugs at http://bugs.hledger.org (or on the #hledger IRC  channel
+       Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel
        or hledger mail list)
 
 
@@ -1407,7 +1443,7 @@
 
 
 SEE ALSO
-       hledger(1),      hledger-ui(1),     hledger-web(1),     hledger-api(1),
+       hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),
        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
        dot(5), ledger(1)
 
@@ -1415,4 +1451,4 @@
 
 
 
-hledger 1.17                      March 2020                hledger_journal(5)
+hledger 1.17.0.1                  March 2020                hledger_journal(5)
diff --git a/embeddedfiles/hledger_timeclock.5 b/embeddedfiles/hledger_timeclock.5
--- a/embeddedfiles/hledger_timeclock.5
+++ b/embeddedfiles/hledger_timeclock.5
@@ -1,5 +1,5 @@
 
-.TH "hledger_timeclock" "5" "March 2020" "hledger 1.17" "hledger User Manuals"
+.TH "hledger_timeclock" "5" "March 2020" "hledger 1.17.0.1" "hledger User Manuals"
 
 
 
diff --git a/embeddedfiles/hledger_timeclock.info b/embeddedfiles/hledger_timeclock.info
--- a/embeddedfiles/hledger_timeclock.info
+++ b/embeddedfiles/hledger_timeclock.info
@@ -4,8 +4,8 @@
 
 File: hledger_timeclock.info,  Node: Top,  Up: (dir)
 
-hledger_timeclock(5) hledger 1.17
-*********************************
+hledger_timeclock(5) hledger 1.17.0.1
+*************************************
 
 Timeclock - the time logging format of timeclock.el, as read by hledger
 
diff --git a/embeddedfiles/hledger_timeclock.txt b/embeddedfiles/hledger_timeclock.txt
--- a/embeddedfiles/hledger_timeclock.txt
+++ b/embeddedfiles/hledger_timeclock.txt
@@ -78,4 +78,4 @@
 
 
 
-hledger 1.17                      March 2020              hledger_timeclock(5)
+hledger 1.17.0.1                  March 2020              hledger_timeclock(5)
diff --git a/embeddedfiles/hledger_timedot.5 b/embeddedfiles/hledger_timedot.5
--- a/embeddedfiles/hledger_timedot.5
+++ b/embeddedfiles/hledger_timedot.5
@@ -1,5 +1,5 @@
 
-.TH "hledger_timedot" "5" "March 2020" "hledger 1.17" "hledger User Manuals"
+.TH "hledger_timedot" "5" "March 2020" "hledger 1.17.0.1" "hledger User Manuals"
 
 
 
diff --git a/embeddedfiles/hledger_timedot.info b/embeddedfiles/hledger_timedot.info
--- a/embeddedfiles/hledger_timedot.info
+++ b/embeddedfiles/hledger_timedot.info
@@ -4,8 +4,8 @@
 
 File: hledger_timedot.info,  Node: Top,  Up: (dir)
 
-hledger_timedot(5) hledger 1.17
-*******************************
+hledger_timedot(5) hledger 1.17.0.1
+***********************************
 
 Timedot - hledger's human-friendly time logging format
 
diff --git a/embeddedfiles/hledger_timedot.txt b/embeddedfiles/hledger_timedot.txt
--- a/embeddedfiles/hledger_timedot.txt
+++ b/embeddedfiles/hledger_timedot.txt
@@ -161,4 +161,4 @@
 
 
 
-hledger 1.17                      March 2020                hledger_timedot(5)
+hledger 1.17.0.1                  March 2020                hledger_timedot(5)
diff --git a/hledger.1 b/hledger.1
--- a/hledger.1
+++ b/hledger.1
@@ -1,6 +1,6 @@
 .\"t
 
-.TH "hledger" "1" "March 2020" "hledger 1.17" "hledger User Manuals"
+.TH "hledger" "1" "March 2020" "hledger 1.17.1" "hledger User Manuals"
 
 
 
diff --git a/hledger.cabal b/hledger.cabal
--- a/hledger.cabal
+++ b/hledger.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: dd27e441eb3a9ba5f967dd8bd16e1806c793f7debe1277f7d8f08a88bba45971
+-- hash: d2abd7cee761e265ed4dc8ae537931e737aac9f6e567945069d79d7641879321
 
 name:           hledger
-version:        1.17
+version:        1.17.1
 synopsis:       Command-line interface for the hledger accounting tool
 description:    This is hledger's command-line interface.
                 Its basic function is to read a plain text file describing
@@ -144,9 +144,9 @@
   other-modules:
       Paths_hledger
   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path
-  cpp-options: -DVERSION="1.17"
+  cpp-options: -DVERSION="1.17.1"
   build-depends:
-      Decimal
+      Decimal >=0.5.1
     , Diff
     , aeson
     , ansi-terminal >=0.6.2.3
@@ -163,7 +163,7 @@
     , haskeline >=0.6
     , hledger-lib >=1.17 && <1.18
     , lucid
-    , math-functions >=0.2.0.0
+    , math-functions >=0.3.3.0
     , megaparsec >=7.0.0 && <8.1
     , mtl >=2.2.1
     , old-time
@@ -197,9 +197,9 @@
   hs-source-dirs:
       app
   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path
-  cpp-options: -DVERSION="1.17"
+  cpp-options: -DVERSION="1.17.1"
   build-depends:
-      Decimal
+      Decimal >=0.5.1
     , aeson
     , ansi-terminal >=0.6.2.3
     , base >=4.9 && <4.15
@@ -214,7 +214,7 @@
     , haskeline >=0.6
     , hledger
     , hledger-lib >=1.17 && <1.18
-    , math-functions >=0.2.0.0
+    , math-functions >=0.3.3.0
     , megaparsec >=7.0.0 && <8.1
     , mtl >=2.2.1
     , old-time
@@ -249,9 +249,9 @@
   hs-source-dirs:
       test
   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path
-  cpp-options: -DVERSION="1.17"
+  cpp-options: -DVERSION="1.17.1"
   build-depends:
-      Decimal
+      Decimal >=0.5.1
     , aeson
     , ansi-terminal >=0.6.2.3
     , base >=4.9 && <4.15
@@ -266,7 +266,7 @@
     , haskeline >=0.6
     , hledger
     , hledger-lib >=1.17 && <1.18
-    , math-functions >=0.2.0.0
+    , math-functions >=0.3.3.0
     , megaparsec >=7.0.0 && <8.1
     , mtl >=2.2.1
     , old-time
@@ -300,7 +300,7 @@
       bench
   ghc-options: -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-type-defaults -fno-warn-orphans -optP-Wno-nonportable-include-path
   build-depends:
-      Decimal
+      Decimal >=0.5.1
     , aeson
     , ansi-terminal >=0.6.2.3
     , base >=4.9 && <4.15
@@ -317,7 +317,7 @@
     , hledger
     , hledger-lib >=1.17 && <1.18
     , html
-    , math-functions >=0.2.0.0
+    , math-functions >=0.3.3.0
     , megaparsec >=7.0.0 && <8.1
     , mtl >=2.2.1
     , old-time
diff --git a/hledger.info b/hledger.info
--- a/hledger.info
+++ b/hledger.info
@@ -3,8 +3,8 @@
 
 File: hledger.info,  Node: Top,  Next: COMMON TASKS,  Up: (dir)
 
-hledger(1) hledger 1.17
-***********************
+hledger(1) hledger 1.17.1
+*************************
 
 hledger - a command-line accounting tool
 
@@ -3734,187 +3734,187 @@
 
 Tag Table:
 Node: Top68
-Node: COMMON TASKS2315
-Ref: #common-tasks2427
-Node: Getting help2834
-Ref: #getting-help2966
-Node: Constructing command lines3519
-Ref: #constructing-command-lines3711
-Node: Starting a journal file4408
-Ref: #starting-a-journal-file4606
-Node: Setting opening balances5794
-Ref: #setting-opening-balances5990
-Node: Recording transactions9131
-Ref: #recording-transactions9311
-Node: Reconciling9867
-Ref: #reconciling10010
-Node: Reporting12267
-Ref: #reporting12407
-Node: Migrating to a new file16406
-Ref: #migrating-to-a-new-file16554
-Node: OPTIONS16853
-Ref: #options16960
-Node: General options17330
-Ref: #general-options17455
-Node: Command options20225
-Ref: #command-options20376
-Node: Command arguments20774
-Ref: #command-arguments20921
-Node: Queries21801
-Ref: #queries21956
-Node: Special characters in arguments and queries25918
-Ref: #special-characters-in-arguments-and-queries26146
-Node: More escaping26597
-Ref: #more-escaping26759
-Node: Even more escaping27055
-Ref: #even-more-escaping27249
-Node: Less escaping27920
-Ref: #less-escaping28082
-Node: Unicode characters28327
-Ref: #unicode-characters28509
-Node: Input files29921
-Ref: #input-files30064
-Node: Output destination31993
-Ref: #output-destination32145
-Node: Output format32570
-Ref: #output-format32720
-Node: Regular expressions34768
-Ref: #regular-expressions34925
-Node: Smart dates36286
-Ref: #smart-dates36437
-Node: Report start & end date37798
-Ref: #report-start-end-date37970
-Node: Report intervals39408
-Ref: #report-intervals39573
-Node: Period expressions39963
-Ref: #period-expressions40123
-Node: Depth limiting44249
-Ref: #depth-limiting44393
-Node: Pivoting44735
-Ref: #pivoting44858
-Node: Valuation46534
-Ref: #valuation46636
-Node: -B Cost46816
-Ref: #b-cost46927
-Node: -V Market value47125
-Ref: #v-market-value47299
-Node: -X Market value in specified commodity48731
-Ref: #x-market-value-in-specified-commodity48970
-Node: --value Flexible valuation49146
-Ref: #value-flexible-valuation49372
-Node: Effect of --value on reports53877
-Ref: #effect-of---value-on-reports54093
-Node: Combining -B -V -X --value59639
-Ref: #combining--b--v--x---value59822
-Node: COMMANDS59858
-Ref: #commands59966
-Node: accounts61050
-Ref: #accounts61148
-Node: activity61847
-Ref: #activity61957
-Node: add62340
-Ref: #add62439
-Node: balance65178
-Ref: #balance65289
-Node: Classic balance report66747
-Ref: #classic-balance-report66920
-Node: Customising the classic balance report68289
-Ref: #customising-the-classic-balance-report68517
-Node: Colour support70593
-Ref: #colour-support70760
-Node: Flat mode70933
-Ref: #flat-mode71081
-Node: Depth limited balance reports71494
-Ref: #depth-limited-balance-reports71679
-Node: Percentages72135
-Ref: #percentages72301
-Node: Multicolumn balance report73438
-Ref: #multicolumn-balance-report73618
-Node: Budget report78880
-Ref: #budget-report79023
-Node: Nested budgets84225
-Ref: #nested-budgets84337
-Ref: #output-format-187818
-Node: balancesheet88015
-Ref: #balancesheet88151
-Node: balancesheetequity89617
-Ref: #balancesheetequity89766
-Node: cashflow90489
-Ref: #cashflow90617
-Node: check-dates91796
-Ref: #check-dates91923
-Node: check-dupes92202
-Ref: #check-dupes92326
-Node: close92619
-Ref: #close92733
-Node: close usage94255
-Ref: #close-usage94348
-Node: commodities97161
-Ref: #commodities97288
-Node: descriptions97370
-Ref: #descriptions97498
-Node: diff97679
-Ref: #diff97785
-Node: files98832
-Ref: #files98932
-Node: help99079
-Ref: #help99179
-Node: import100260
-Ref: #import100374
-Node: Importing balance assignments101267
-Ref: #importing-balance-assignments101415
-Node: incomestatement102064
-Ref: #incomestatement102197
-Node: notes103684
-Ref: #notes103797
-Node: payees103923
-Ref: #payees104029
-Node: prices104187
-Ref: #prices104293
-Node: print104634
-Ref: #print104744
-Node: print-unique109530
-Ref: #print-unique109656
-Node: register109941
-Ref: #register110068
-Node: Custom register output114240
-Ref: #custom-register-output114369
-Node: register-match115706
-Ref: #register-match115840
-Node: rewrite116191
-Ref: #rewrite116306
-Node: Re-write rules in a file118161
-Ref: #re-write-rules-in-a-file118295
-Node: Diff output format119505
-Ref: #diff-output-format119674
-Node: rewrite vs print --auto120766
-Ref: #rewrite-vs.-print---auto120945
-Node: roi121501
-Ref: #roi121599
-Node: stats122611
-Ref: #stats122710
-Node: tags123498
-Ref: #tags123596
-Node: test123890
-Ref: #test123998
-Node: Add-on Commands124745
-Ref: #add-on-commands124862
-Node: ui126205
-Ref: #ui126293
-Node: web126347
-Ref: #web126450
-Node: iadd126566
-Ref: #iadd126677
-Node: interest126759
-Ref: #interest126866
-Node: ENVIRONMENT127106
-Ref: #environment127218
-Node: FILES128047
-Ref: #files-1128150
-Node: LIMITATIONS128363
-Ref: #limitations128482
-Node: TROUBLESHOOTING129224
-Ref: #troubleshooting129337
+Node: COMMON TASKS2319
+Ref: #common-tasks2431
+Node: Getting help2838
+Ref: #getting-help2970
+Node: Constructing command lines3523
+Ref: #constructing-command-lines3715
+Node: Starting a journal file4412
+Ref: #starting-a-journal-file4610
+Node: Setting opening balances5798
+Ref: #setting-opening-balances5994
+Node: Recording transactions9135
+Ref: #recording-transactions9315
+Node: Reconciling9871
+Ref: #reconciling10014
+Node: Reporting12271
+Ref: #reporting12411
+Node: Migrating to a new file16410
+Ref: #migrating-to-a-new-file16558
+Node: OPTIONS16857
+Ref: #options16964
+Node: General options17334
+Ref: #general-options17459
+Node: Command options20229
+Ref: #command-options20380
+Node: Command arguments20778
+Ref: #command-arguments20925
+Node: Queries21805
+Ref: #queries21960
+Node: Special characters in arguments and queries25922
+Ref: #special-characters-in-arguments-and-queries26150
+Node: More escaping26601
+Ref: #more-escaping26763
+Node: Even more escaping27059
+Ref: #even-more-escaping27253
+Node: Less escaping27924
+Ref: #less-escaping28086
+Node: Unicode characters28331
+Ref: #unicode-characters28513
+Node: Input files29925
+Ref: #input-files30068
+Node: Output destination31997
+Ref: #output-destination32149
+Node: Output format32574
+Ref: #output-format32724
+Node: Regular expressions34772
+Ref: #regular-expressions34929
+Node: Smart dates36290
+Ref: #smart-dates36441
+Node: Report start & end date37802
+Ref: #report-start-end-date37974
+Node: Report intervals39412
+Ref: #report-intervals39577
+Node: Period expressions39967
+Ref: #period-expressions40127
+Node: Depth limiting44253
+Ref: #depth-limiting44397
+Node: Pivoting44739
+Ref: #pivoting44862
+Node: Valuation46538
+Ref: #valuation46640
+Node: -B Cost46820
+Ref: #b-cost46931
+Node: -V Market value47129
+Ref: #v-market-value47303
+Node: -X Market value in specified commodity48735
+Ref: #x-market-value-in-specified-commodity48974
+Node: --value Flexible valuation49150
+Ref: #value-flexible-valuation49376
+Node: Effect of --value on reports53881
+Ref: #effect-of---value-on-reports54097
+Node: Combining -B -V -X --value59643
+Ref: #combining--b--v--x---value59826
+Node: COMMANDS59862
+Ref: #commands59970
+Node: accounts61054
+Ref: #accounts61152
+Node: activity61851
+Ref: #activity61961
+Node: add62344
+Ref: #add62443
+Node: balance65182
+Ref: #balance65293
+Node: Classic balance report66751
+Ref: #classic-balance-report66924
+Node: Customising the classic balance report68293
+Ref: #customising-the-classic-balance-report68521
+Node: Colour support70597
+Ref: #colour-support70764
+Node: Flat mode70937
+Ref: #flat-mode71085
+Node: Depth limited balance reports71498
+Ref: #depth-limited-balance-reports71683
+Node: Percentages72139
+Ref: #percentages72305
+Node: Multicolumn balance report73442
+Ref: #multicolumn-balance-report73622
+Node: Budget report78884
+Ref: #budget-report79027
+Node: Nested budgets84229
+Ref: #nested-budgets84341
+Ref: #output-format-187822
+Node: balancesheet88019
+Ref: #balancesheet88155
+Node: balancesheetequity89621
+Ref: #balancesheetequity89770
+Node: cashflow90493
+Ref: #cashflow90621
+Node: check-dates91800
+Ref: #check-dates91927
+Node: check-dupes92206
+Ref: #check-dupes92330
+Node: close92623
+Ref: #close92737
+Node: close usage94259
+Ref: #close-usage94352
+Node: commodities97165
+Ref: #commodities97292
+Node: descriptions97374
+Ref: #descriptions97502
+Node: diff97683
+Ref: #diff97789
+Node: files98836
+Ref: #files98936
+Node: help99083
+Ref: #help99183
+Node: import100264
+Ref: #import100378
+Node: Importing balance assignments101271
+Ref: #importing-balance-assignments101419
+Node: incomestatement102068
+Ref: #incomestatement102201
+Node: notes103688
+Ref: #notes103801
+Node: payees103927
+Ref: #payees104033
+Node: prices104191
+Ref: #prices104297
+Node: print104638
+Ref: #print104748
+Node: print-unique109534
+Ref: #print-unique109660
+Node: register109945
+Ref: #register110072
+Node: Custom register output114244
+Ref: #custom-register-output114373
+Node: register-match115710
+Ref: #register-match115844
+Node: rewrite116195
+Ref: #rewrite116310
+Node: Re-write rules in a file118165
+Ref: #re-write-rules-in-a-file118299
+Node: Diff output format119509
+Ref: #diff-output-format119678
+Node: rewrite vs print --auto120770
+Ref: #rewrite-vs.-print---auto120949
+Node: roi121505
+Ref: #roi121603
+Node: stats122615
+Ref: #stats122714
+Node: tags123502
+Ref: #tags123600
+Node: test123894
+Ref: #test124002
+Node: Add-on Commands124749
+Ref: #add-on-commands124866
+Node: ui126209
+Ref: #ui126297
+Node: web126351
+Ref: #web126454
+Node: iadd126570
+Ref: #iadd126681
+Node: interest126763
+Ref: #interest126870
+Node: ENVIRONMENT127110
+Ref: #environment127222
+Node: FILES128051
+Ref: #files-1128154
+Node: LIMITATIONS128367
+Ref: #limitations128486
+Node: TROUBLESHOOTING129228
+Ref: #troubleshooting129341
 
 End Tag Table
 
diff --git a/hledger.txt b/hledger.txt
--- a/hledger.txt
+++ b/hledger.txt
@@ -3187,4 +3187,4 @@
 
 
 
-hledger 1.17                      March 2020                        hledger(1)
+hledger 1.17.1                    March 2020                        hledger(1)
diff --git a/test/unittest.hs b/test/unittest.hs
--- a/test/unittest.hs
+++ b/test/unittest.hs
@@ -7,7 +7,11 @@
 -- {-# LANGUAGE PackageImports #-}
 -- import "hledger" Hledger.Cli (tests_Hledger_Cli)
 import Hledger.Cli (tests_Hledger_Cli)
-
+import System.Environment (setEnv)
 import Test.Tasty (defaultMain)
 
-main = defaultMain tests_Hledger_Cli
+main :: IO ()
+main = do
+  setEnv "TASTY_HIDE_SUCCESSES" "true"
+  setEnv "TASTY_ANSI_TRICKS" "false"  -- helps the above
+  defaultMain tests_Hledger_Cli
