     "vocab:zoneinfo/northamerica"
     "vocab:zoneinfo/pacificnew"
     "vocab:zoneinfo/southamerica"
+    "vocab:zoneinfo/backzone"
+}
+
+CONSTANT: zoneinfo-extra-paths
+{
+    "vocab:zoneinfo/backward"
     "vocab:zoneinfo/etcetera"
     "vocab:zoneinfo/factory"
     "vocab:zoneinfo/leapseconds"
     "vocab:zoneinfo/systemv"
 }
+
+: zoneinfo-lines ( path -- seq )
+    utf8 file-lines
+    [
+        { [ length 0 = ] [ "#" head? ] } 1||
+    ] reject
+    [ "\t " split ] map ;
+
+MEMO: zoneinfo-country-zones ( -- seq )
+    "vocab:zoneinfo/zone1970.tab" zoneinfo-lines ;
 
 SYMBOL: last-zone
 


: zone-abbrevs ( -- assoc )
    zoneinfo-zones [
        find-zone-rules [ format>> ] dip
        [
            letters>> swap "%" split1 dup [ 1 tail ] when surround
        ] with V{ } map-as
    ] zip-with ;

: number>value ( n -- n' )

! Copyright (C) 2009 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays ascii assocs assocs.extras calendar
calendar.english combinators combinators.short-circuit
combinators.smart csv grouping interval-maps io.encodings.utf8
io.files kernel math math.parser memoize namespaces sequences
sequences.extras sorting splitting splitting.extras ;
QUALIFIED: sets
IN: zoneinfo

CONSTANT: zoneinfo-paths
