chiark / gitweb /
trains.git
13 years agohostside/gui: include keys for C5/B7 crossover
Ian Jackson [Tue, 4 Jan 2011 00:28:31 +0000 (00:28 +0000)]
hostside/gui: include keys for C5/B7 crossover

13 years agorealtime: avoid needless signalling problems related to interference
Ian Jackson [Mon, 3 Jan 2011 23:23:41 +0000 (23:23 +0000)]
realtime: avoid needless signalling problems related to interference

When we are considering an interfering segment, we want to first see
whether the segment has anything in it and only if so consider its
position.  That avoids is calling it a problem that the interfering
segment's position is not known (eg, because it has never been set).

To support this, split segment_interferes into two functions:
  segment_interferer: simply returns the possibly-interfering segment
      so that we can check whether it's relevant
  segment_interferer_does: does the hard work, dealing appropriately
      with errors

At all but the one call site of interest we can assert that the
getmovpos callback never fails, so we provide a helper function
  segment_interferes_simple
which does what segment_interferes used to (except that getmovpos
returning an error now causes an abort).

13 years agorealtime: do not panic if we consider an unknown movposcomb - just predict a problem
Ian Jackson [Mon, 3 Jan 2011 23:23:33 +0000 (23:23 +0000)]
realtime: do not panic if we consider an unknown movposcomb - just predict a problem

13 years agohostside: add bavarian to x.gdb args
Ian Jackson [Mon, 3 Jan 2011 22:21:43 +0000 (22:21 +0000)]
hostside: add bavarian to x.gdb args

13 years agohostside: add bavarian to multiplex; better homes
Ian Jackson [Mon, 3 Jan 2011 22:17:59 +0000 (22:17 +0000)]
hostside: add bavarian to multiplex; better homes

13 years agofirmware: if we fire a point just before being turned off, still note that the point...
Ian Jackson [Mon, 3 Jan 2011 22:13:52 +0000 (22:13 +0000)]
firmware: if we fire a point just before being turned off, still note that the point was fired, send 20, etc.

13 years agofirmware: properly document complicated combined firing/off point states
Ian Jackson [Mon, 3 Jan 2011 22:13:26 +0000 (22:13 +0000)]
firmware: properly document complicated combined firing/off point states

13 years agoMerge branch 'master' of login.chiark.greenend.org.uk:things/Trains/trains
Ian Jackson [Mon, 3 Jan 2011 21:06:25 +0000 (21:06 +0000)]
Merge branch 'master' of login.chiark.greenend.org.uk:things/Trains/trains

13 years agohostside/bavarian: speed measurements: combine six separate runs of measure-speeds...
Ian Jackson [Mon, 3 Jan 2011 21:03:52 +0000 (21:03 +0000)]
hostside/bavarian: speed measurements: combine six separate runs of measure-speeds into one
rune was:   ./measure-speeds /dev/railway AX speed 4 55 1 `seq 43 126` | tee bavarian-1reverse6.speeds   etc.

13 years agohostside/bavarian: speed measurements: edit out a bogus measurement (having seen...
Ian Jackson [Mon, 3 Jan 2011 21:02:34 +0000 (21:02 +0000)]
hostside/bavarian: speed measurements: edit out a bogus measurement (having seen the train do the wrong thing)

13 years agohostside/bavarian: speed measurements, backwards
Ian Jackson [Mon, 3 Jan 2011 21:01:42 +0000 (21:01 +0000)]
hostside/bavarian: speed measurements, backwards

13 years agohostside/measure-speeds: when positioning for slow, when we have just done slow speed...
Ian Jackson [Mon, 3 Jan 2011 19:58:20 +0000 (19:58 +0000)]
hostside/measure-speeds: when positioning for slow, when we have just done slow speed, look for X7 too

13 years agohostside/measure-speeds: when positioning for slow, when we have just done slow speed...
Ian Jackson [Mon, 3 Jan 2011 19:32:44 +0000 (19:32 +0000)]
hostside/measure-speeds: when positioning for slow, when we have just done slow speed, do not bother with forward movement towards X8 et al

13 years agohostside/bavarian: Add bavarian to TRAINS
Ian Jackson [Mon, 3 Jan 2011 19:23:46 +0000 (19:23 +0000)]
hostside/bavarian: Add bavarian to TRAINS

13 years agohostside/measure-speeds: when positioning for slow, check for entry to X8 too
Ian Jackson [Mon, 3 Jan 2011 19:23:36 +0000 (19:23 +0000)]
hostside/measure-speeds: when positioning for slow, check for entry to X8 too

13 years agohostside/analyse-speeds: decreasing speed is only a warning
Ian Jackson [Mon, 3 Jan 2011 19:23:11 +0000 (19:23 +0000)]
hostside/analyse-speeds: decreasing speed is only a warning

13 years agohostside/bavarian: remove bogus speed measurements just made
Ian Jackson [Mon, 3 Jan 2011 19:22:56 +0000 (19:22 +0000)]
hostside/bavarian: remove bogus speed measurements just made

13 years agohostside/measure-speeds: repeat OFF command (can help if there was nmra buffered...
Ian Jackson [Mon, 3 Jan 2011 19:03:18 +0000 (19:03 +0000)]
hostside/measure-speeds: repeat OFF command (can help if there was nmra buffered, eg)

13 years agohostside/measure-speeds: add imprecation to include args to measure-speed in commit...
Ian Jackson [Mon, 3 Jan 2011 19:01:09 +0000 (19:01 +0000)]
hostside/measure-speeds: add imprecation to include args to measure-speed in commit message

13 years agohostside/bavarian: start of speed measurement, started with 126, but track running...
Ian Jackson [Mon, 3 Jan 2011 18:52:26 +0000 (18:52 +0000)]
hostside/bavarian: start of speed measurement, started with 126, but track running-in effect means speeds are increasing.  Must do again.

13 years agohostside/adhoc-test: fix out of date comment in README.adhoc-test
Ian Jackson [Mon, 3 Jan 2011 18:43:34 +0000 (18:43 +0000)]
hostside/adhoc-test: fix out of date comment in README.adhoc-test

13 years agohostside: rename hostside-old to adhoc-test
Ian Jackson [Mon, 3 Jan 2011 18:41:39 +0000 (18:41 +0000)]
hostside: rename hostside-old to adhoc-test

13 years agoMerge branch 'master' of login.chiark.greenend.org.uk:things/Trains/trains
Ian Jackson [Mon, 3 Jan 2011 18:36:36 +0000 (18:36 +0000)]
Merge branch 'master' of login.chiark.greenend.org.uk:things/Trains/trains

13 years agohostside: stopping distance and time measurements for santafe and bavarian
Ian Jackson [Mon, 3 Jan 2011 18:30:09 +0000 (18:30 +0000)]
hostside: stopping distance and time measurements for santafe and bavarian

13 years agohostside/measure-speeds: better recovery from unhelpful initial positions
Ian Jackson [Mon, 3 Jan 2011 18:29:05 +0000 (18:29 +0000)]
hostside/measure-speeds: better recovery from unhelpful initial positions

13 years agohostside/measure-speeds: make fastest "slow" speed a command line option, rather...
Ian Jackson [Mon, 3 Jan 2011 18:28:28 +0000 (18:28 +0000)]
hostside/measure-speeds: make fastest "slow" speed a command line option, rather than hardwiring 50

13 years agohostside/measure-speeds: understand how to normalise AX loop
Ian Jackson [Mon, 3 Jan 2011 18:27:23 +0000 (18:27 +0000)]
hostside/measure-speeds: understand how to normalise AX loop

13 years agohostside/gui-*.config: new wheel mouse
Ian Jackson [Mon, 3 Jan 2011 01:20:46 +0000 (01:20 +0000)]
hostside/gui-*.config: new wheel mouse

13 years agohostside: santafe: real stopping distance measurements for santafe
Ian Jackson [Sun, 2 Jan 2011 23:29:05 +0000 (23:29 +0000)]
hostside: santafe: real stopping distance measurements for santafe

13 years agohostside/measure-speeds: set points when using track C to avoid train diving off...
Ian Jackson [Sun, 2 Jan 2011 23:01:37 +0000 (23:01 +0000)]
hostside/measure-speeds: set points when using track C to avoid train diving off into nowhere

13 years agohostside/measure-speeds: initialise detend, settle_detend
Ian Jackson [Sun, 2 Jan 2011 23:01:20 +0000 (23:01 +0000)]
hostside/measure-speeds: initialise detend, settle_detend

13 years agohostside/measure-speeds: stopping distance measurement on track C works
Ian Jackson [Sun, 2 Jan 2011 22:35:19 +0000 (22:35 +0000)]
hostside/measure-speeds: stopping distance measurement on track C works

13 years agohostside/measure-speeds: wip outer oval, comments only so far
Ian Jackson [Sun, 2 Jan 2011 20:08:51 +0000 (20:08 +0000)]
hostside/measure-speeds: wip outer oval, comments only so far

13 years agohostside/measure-speeds: head comment mentions stopping distance capability
Ian Jackson [Sun, 2 Jan 2011 20:03:09 +0000 (20:03 +0000)]
hostside/measure-speeds: head comment mentions stopping distance capability

13 years agoours.wiring: remove now-spurious "fixed" settings for C5 and B7 (hardware is fixed)
Ian Jackson [Sun, 2 Jan 2011 19:21:17 +0000 (19:21 +0000)]
ours.wiring: remove now-spurious "fixed" settings for C5 and B7 (hardware is fixed)

13 years agoours.wiring: corrected wiring for C5/P (hardware is now fixed)
Ian Jackson [Sun, 2 Jan 2011 19:20:18 +0000 (19:20 +0000)]
ours.wiring: corrected wiring for C5/P (hardware is now fixed)

13 years agogui: reformat specification of movpos bindings (no functional change)
Ian Jackson [Sun, 2 Jan 2011 14:02:54 +0000 (14:02 +0000)]
gui: reformat specification of movpos bindings (no functional change)

13 years agogui, etc.: re-enable slip2 (B9) as we should now be able to support it
Ian Jackson [Sun, 2 Jan 2011 13:49:15 +0000 (13:49 +0000)]
gui, etc.: re-enable slip2 (B9) as we should now be able to support it

13 years agogui: support manual adjustment of movpos button locations
Ian Jackson [Sun, 2 Jan 2011 13:47:58 +0000 (13:47 +0000)]
gui: support manual adjustment of movpos button locations

13 years agogui: change contents of ld_see to be list of poslocs rather than sum of their positio...
Ian Jackson [Sun, 2 Jan 2011 13:30:59 +0000 (13:30 +0000)]
gui: change contents of ld_see to be list of poslocs rather than sum of their positions; no functional change but would make more sophisticated positioning algorithms a bit easier

13 years agohostside/lib.tcl: new setexpr and addexpr commands
Ian Jackson [Sun, 2 Jan 2011 13:27:39 +0000 (13:27 +0000)]
hostside/lib.tcl: new setexpr and addexpr commands

13 years agogui, etc.: provide gui with sensible info about concrete vs. actual movfeat posns
Ian Jackson [Sun, 2 Jan 2011 03:32:35 +0000 (03:32 +0000)]
gui, etc.: provide gui with sensible info about concrete vs. actual movfeat posns

13 years agolayout: segments B0 and C0: swap positions P0 and P1
Ian Jackson [Sun, 2 Jan 2011 01:44:00 +0000 (01:44 +0000)]
layout: segments B0 and C0: swap positions P0 and P1

13 years agohostside/safety: correctly pass JUSTDET back to predict() inside safetymanager_safety...
Ian Jackson [Sun, 2 Jan 2011 01:37:11 +0000 (01:37 +0000)]
hostside/safety: correctly pass JUSTDET back to predict() inside safetymanager_safety_stop if need be (involves adding new predictflags arg to predict() et al)

13 years agohostside: x.gdb updated for newer trains, simulation replay arguments
Ian Jackson [Sun, 2 Jan 2011 01:36:39 +0000 (01:36 +0000)]
hostside: x.gdb updated for newer trains, simulation replay arguments

13 years agohostside: better homes, inc. for shinkansen
Ian Jackson [Fri, 31 Dec 2010 21:20:45 +0000 (21:20 +0000)]
hostside: better homes, inc. for shinkansen

13 years agohostside: add basic hoover.cv-s
Ian Jackson [Fri, 31 Dec 2010 20:36:42 +0000 (20:36 +0000)]
hostside: add basic hoover.cv-s

13 years agogui: invert sense of mouse wheels
Ian Jackson [Fri, 31 Dec 2010 20:01:54 +0000 (20:01 +0000)]
gui: invert sense of mouse wheels

13 years agowiring, etc.: disable B<->C crossovers as some of the points are not working
Ian Jackson [Fri, 31 Dec 2010 20:00:02 +0000 (20:00 +0000)]
wiring, etc.: disable B<->C crossovers as some of the points are not working

13 years agoours.wiring: final fixes ?
Ian Jackson [Fri, 31 Dec 2010 19:00:29 +0000 (19:00 +0000)]
ours.wiring: final fixes ?

13 years agoours.wiring: fixes to point locations and polarity
Ian Jackson [Fri, 31 Dec 2010 18:20:46 +0000 (18:20 +0000)]
ours.wiring: fixes to point locations and polarity

13 years agodata2safety: detect doubly-used detections
Ian Jackson [Fri, 31 Dec 2010 18:12:47 +0000 (18:12 +0000)]
data2safety: detect doubly-used detections

13 years agoours.wiring: correct wiring info for C10 detection
Ian Jackson [Fri, 31 Dec 2010 18:12:27 +0000 (18:12 +0000)]
ours.wiring: correct wiring info for C10 detection

13 years agogui-plan: ignore MappingNotify
Ian Jackson [Fri, 31 Dec 2010 15:56:07 +0000 (15:56 +0000)]
gui-plan: ignore MappingNotify

13 years agogui: one fewer problem report line
Ian Jackson [Fri, 31 Dec 2010 15:55:57 +0000 (15:55 +0000)]
gui: one fewer problem report line

13 years agogui: fix button padding
Ian Jackson [Fri, 31 Dec 2010 15:46:51 +0000 (15:46 +0000)]
gui: fix button padding

13 years agogui: change button for sel train, forward/reverse
Ian Jackson [Fri, 31 Dec 2010 15:44:54 +0000 (15:44 +0000)]
gui: change button for sel train, forward/reverse

13 years agogui: wip add padding to picture to let buttons be visible
Ian Jackson [Fri, 31 Dec 2010 15:44:37 +0000 (15:44 +0000)]
gui: wip add padding to picture to let buttons be visible

13 years agohostside/multiplex: do not crash when denied callers connect (!)
Ian Jackson [Fri, 31 Dec 2010 15:44:03 +0000 (15:44 +0000)]
hostside/multiplex: do not crash when denied callers connect (!)

13 years agogui, evdev*: new evdev-manip-ebwikeb for finding the right input devices for the...
Ian Jackson [Fri, 31 Dec 2010 15:08:50 +0000 (15:08 +0000)]
gui, evdev*: new evdev-manip-ebwikeb for finding the right input devices for the Ebuyer keyboard

13 years agorealtime: add missing newline to info message
Ian Jackson [Fri, 31 Dec 2010 14:40:30 +0000 (14:40 +0000)]
realtime: add missing newline to info message

13 years agogui-plan: properly initialise seg.owner
Ian Jackson [Fri, 31 Dec 2010 14:40:05 +0000 (14:40 +0000)]
gui-plan: properly initialise seg.owner

13 years agopcb/Makefile: correct dependencies for points-pin-alloc.lout
Ian Jackson [Fri, 31 Dec 2010 02:33:04 +0000 (02:33 +0000)]
pcb/Makefile: correct dependencies for points-pin-alloc.lout

13 years agogui-layout.config: keybindings for phase 2 points
Ian Jackson [Fri, 31 Dec 2010 02:30:25 +0000 (02:30 +0000)]
gui-layout.config: keybindings for phase 2 points

13 years agoours.wiring: fix A5-A6 interference
Ian Jackson [Fri, 31 Dec 2010 00:13:48 +0000 (00:13 +0000)]
ours.wiring: fix A5-A6 interference

13 years agoours.wiring: detection and further points wiring for phase 2
Ian Jackson [Fri, 31 Dec 2010 00:13:31 +0000 (00:13 +0000)]
ours.wiring: detection and further points wiring for phase 2

13 years agoours: rename segments from P* to * wip.phase-2-segments
Ian Jackson [Sun, 26 Dec 2010 19:34:49 +0000 (19:34 +0000)]
ours: rename segments from P* to *

13 years agoours.m4: minor segment assignment changes to correspond more closely to as built
Ian Jackson [Sun, 26 Dec 2010 19:29:09 +0000 (19:29 +0000)]
ours.m4: minor segment assignment changes to correspond more closely to as built

13 years agoours.wiring: correct movfeatposmap for PB9, so that P0J0 is straight through; P is...
Ian Jackson [Sat, 25 Dec 2010 17:03:55 +0000 (17:03 +0000)]
ours.wiring: correct movfeatposmap for PB9, so that P0J0 is straight through; P is junction to outside track; J is junction to fig-8

13 years agolayout/parts.i4: better comment for positions of slip2's
Ian Jackson [Sat, 25 Dec 2010 17:02:25 +0000 (17:02 +0000)]
layout/parts.i4: better comment for positions of slip2's

13 years agolayout/ours.wiring: remove dummy detection wiring specs as now we can specify points...
Ian Jackson [Fri, 24 Dec 2010 00:39:48 +0000 (00:39 +0000)]
layout/ours.wiring: remove dummy detection wiring specs as now we can specify points without corresponding detection

13 years agolayout/data2safety: ditch rather than mistake on point relating to unwired segment...
Ian Jackson [Fri, 24 Dec 2010 00:37:05 +0000 (00:37 +0000)]
layout/data2safety: ditch rather than mistake on point relating to unwired segment - but still count the point as present

13 years agolayout/data2safety: ditch rather than mistake on movfeatposmap of an unwired segment
Ian Jackson [Fri, 24 Dec 2010 00:36:28 +0000 (00:36 +0000)]
layout/data2safety: ditch rather than mistake on movfeatposmap of an unwired segment

13 years agolayout/data2safety: tiny improvement to autogenerated comment
Ian Jackson [Fri, 24 Dec 2010 00:29:33 +0000 (00:29 +0000)]
layout/data2safety: tiny improvement to autogenerated comment

13 years agolayout/Makefile: add for-pic to default target
Ian Jackson [Fri, 24 Dec 2010 00:28:49 +0000 (00:28 +0000)]
layout/Makefile: add for-pic to default target

13 years agoours.wiring: actual wiring for many phase 2 points; segment wiring for P* segments...
Ian Jackson [Mon, 20 Dec 2010 02:45:21 +0000 (02:45 +0000)]
ours.wiring: actual wiring for many phase 2 points; segment wiring for P* segments is still fiction

13 years agodetpic, wiring: add board 3, detectors (hardware tested and works)
Ian Jackson [Mon, 20 Dec 2010 02:44:31 +0000 (02:44 +0000)]
detpic, wiring: add board 3, detectors (hardware tested and works)

13 years agopcb/Makefile: build points-pin-alloc.{lout,ps} by default
Ian Jackson [Mon, 20 Dec 2010 01:16:21 +0000 (01:16 +0000)]
pcb/Makefile: build points-pin-alloc.{lout,ps} by default

13 years agoours.wiring: actual wiring for C9/P; PC9 detection is still a lie
Ian Jackson [Sun, 19 Dec 2010 22:23:28 +0000 (22:23 +0000)]
ours.wiring: actual wiring for C9/P; PC9 detection is still a lie

13 years agodetpic/Makefile: verify target does not echo echo command
Ian Jackson [Sun, 19 Dec 2010 18:46:08 +0000 (18:46 +0000)]
detpic/Makefile: verify target does not echo echo command

13 years agodetpic/Makefile: honour TTY variable
Ian Jackson [Sun, 19 Dec 2010 18:45:57 +0000 (18:45 +0000)]
detpic/Makefile: honour TTY variable

13 years agodetpic/Makefile: add a useful comment pointing to pic.make
Ian Jackson [Sun, 19 Dec 2010 18:45:44 +0000 (18:45 +0000)]
detpic/Makefile: add a useful comment pointing to pic.make

13 years agolayout/data2safety: Transfer description of movfeatposmap, now implemented, from...
Ian Jackson [Mon, 13 Dec 2010 02:10:40 +0000 (02:10 +0000)]
layout/data2safety: Transfer description of movfeatposmap, now implemented, from TODO.slip-multi-movfeat

13 years agolayout/plan-to-gui-data: when $t{Edge}, adjust boundaries of background, to make...
Ian Jackson [Sun, 12 Dec 2010 12:54:56 +0000 (12:54 +0000)]
layout/plan-to-gui-data: when $t{Edge}, adjust boundaries of background, to make sure we cover everything (avoids GraphicsExpose event in gui-plan due to background pixmap not covering whole screen

13 years agolayout/plan-to-gui-data: xpmdata_pixel supports $pcharstr=undef, to simply adjust...
Ian Jackson [Sun, 12 Dec 2010 12:53:57 +0000 (12:53 +0000)]
layout/plan-to-gui-data: xpmdata_pixel supports $pcharstr=undef, to simply adjust boundaries

13 years agohostside/gui-plan: break XCopyArea calls out into own function to aid debugging ...
Ian Jackson [Sun, 12 Dec 2010 12:07:35 +0000 (12:07 +0000)]
hostside/gui-plan: break XCopyArea calls out into own function to aid debugging (no functional change)

13 years agohostside/gui-plan: special die handler for GrapicsExpose events (no change other...
Ian Jackson [Sun, 12 Dec 2010 12:06:55 +0000 (12:06 +0000)]
hostside/gui-plan: special die handler for GrapicsExpose events (no change other than in die path)

13 years agohostside/gui-plan: rename w to win and d to display (no functional changes)
Ian Jackson [Sun, 12 Dec 2010 12:04:54 +0000 (12:04 +0000)]
hostside/gui-plan: rename w to win and d to display (no functional changes)

13 years agolayout/ours.wiring: dummy wiring for PB9 for software testing
Ian Jackson [Sun, 12 Dec 2010 12:08:53 +0000 (12:08 +0000)]
layout/ours.wiring: dummy wiring for PB9 for software testing

13 years agolayout/data2safety: use new $desc variable for error reporting - no serious functiona...
Ian Jackson [Sun, 12 Dec 2010 02:07:14 +0000 (02:07 +0000)]
layout/data2safety: use new $desc variable for error reporting - no serious functional change intended other than possible improvements to error messages

13 years agolayout/data2safety: honour movfeatposmap on input and output, and check that we used...
Ian Jackson [Sun, 12 Dec 2010 02:05:59 +0000 (02:05 +0000)]
layout/data2safety: honour movfeatposmap on input and output, and check that we used it all

13 years agolayout/data2safety: when constructing SegmentInfo.pname, sort movfeats into alphabeti...
Ian Jackson [Sun, 12 Dec 2010 02:04:51 +0000 (02:04 +0000)]
layout/data2safety: when constructing SegmentInfo.pname, sort movfeats into alphabetical order

13 years agolayout/data2safety: parse movfeatposmap (but actual implementation still lacking)
Ian Jackson [Sun, 12 Dec 2010 01:21:27 +0000 (01:21 +0000)]
layout/data2safety: parse movfeatposmap (but actual implementation still lacking)

13 years agolayout/data2safety: improve TODO.slip-multi-movfeat plan
Ian Jackson [Sun, 12 Dec 2010 01:20:49 +0000 (01:20 +0000)]
layout/data2safety: improve TODO.slip-multi-movfeat plan

13 years agolayout/data2safety: improve another error report
Ian Jackson [Sun, 12 Dec 2010 01:19:17 +0000 (01:19 +0000)]
layout/data2safety: improve another error report

13 years agolayout/data2safety: improve some error reports
Ian Jackson [Sun, 12 Dec 2010 01:17:55 +0000 (01:17 +0000)]
layout/data2safety: improve some error reports

13 years agolayout/ours.m4: provisional phase 2 - adjust for fouling overlaps at converging junctions
Ian Jackson [Sun, 5 Dec 2010 11:52:39 +0000 (11:52 +0000)]
layout/ours.m4: provisional phase 2 - adjust for fouling overlaps at converging junctions

13 years agolayout/ours.m4: Add a scale to the diagrams.
Ian Jackson [Sun, 5 Dec 2010 11:05:29 +0000 (11:05 +0000)]
layout/ours.m4: Add a scale to the diagrams.

13 years agolayout/ours.m4: provisional phase 2 - adjust segments (fixing offsets in III)
Ian Jackson [Sun, 5 Dec 2010 03:02:45 +0000 (03:02 +0000)]
layout/ours.m4: provisional phase 2 - adjust segments (fixing offsets in III)

13 years agolayout/layout: when segment spec runs out, properly account for the rounding error
Ian Jackson [Sun, 5 Dec 2010 02:31:19 +0000 (02:31 +0000)]
layout/layout: when segment spec runs out, properly account for the rounding error