The below log shows a new block being created every minute on the 35 second mark with the fees increasing, until the completed block 502417 arrives in the Core from a peer node at 20:10:12.
A new block is then created that very same second and I assume passed to BFGminer, with a much lower fee than the one created 37 seconds prior.
It seems that all the prior blocks being created, just in case they are needed, are trumped by this new block created just after a completed block arrives.
Why is it such a lower fee? I suspect because when the completed block arrived, the Bitcoin Core removed all the transactions used in that completed block from the Mem pool of available transactions. Pretty much making all prior blocks created for BFGminer invalid as some of those transactions may have been in this newly completed block.
It seems to me that you shouldnt create a new block until after the current completed block has arrived and the Mem pool has been updated with available transactions.
2018-01-03 20:07:35 CreateNewBlock(): block weight: 3992232 txs: 2203 fees: 378086720 sigops 21168
2018-01-03 20:08:35 CreateNewBlock(): block weight: 3992656 txs: 2419 fees: 410225647 sigops 24184
2018-01-03 20:09:35 CreateNewBlock(): block weight: 3992140 txs: 2480 fees: 471696205 sigops 25236
2018-01-03 20:10:12 UpdateTip: new best=00000000000000000086ed3aef84344e66870d3328bd5debfbbf18a5d4688285 height=502417 version=0x20000000 log2_work=87.79324 tx=288749882 date='2018-01-03 20:10:04' progress=1.000000 cache=112.6MiB(855803txo)
2018-01-03 20:10:12 CreateNewBlock(): block weight: 3992428 txs: 860 fees: 210806676 sigops 6272
2018-01-03 20:11:12 CreateNewBlock(): block weight: 3992460 txs: 1135 fees: 246322036 sigops 9720
2018-01-03 20:12:13 CreateNewBlock(): block weight: 3992348 txs: 1479 fees: 278896141 sigops 12880