diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md
index bbe09d868..537cdde9f 100644
--- a/gtfs/spec/en/reference.md
+++ b/gtfs/spec/en/reference.md
@@ -99,7 +99,7 @@ File: **Required**
| Field Name | Type | Required | Details |
| ------ | ------ | ------ | ------ |
-| agency_id | ID | Optional | The **agency_id** field contains an ID that uniquely identifies a transit agency. A transit feed may represent data from more than one agency. This field is optional for transit feeds that only contain data for a single agency. |
+| agency_id | ID | **Conditionally required** | The **agency_id** field contains an ID that uniquely identifies a transit agency. A transit feed may represent data from more than one agency. This field is required for feeds that contain more than one transit agency, otherwise it is optional. |
| agency_name | Text | **Required** | The **agency_name** field contains the full name of the transit agency. Google Maps will display this name. |
| agency_url | URL | **Required** | The **agency_url** field contains the URL of the transit agency. |
| agency_timezone | Timezone | **Required** | The **agency_timezone** field contains the timezone where the transit agency is located. If multiple agencies are specified in the feed, each must have the same agency_timezone. |
@@ -120,7 +120,7 @@ File: **Required**
| stop_desc | Text | Optional | The **stop_desc** field contains a description of a stop. Please provide useful, quality information. Do not simply duplicate the name of the stop. |
| stop_lat | Latitude | **Required** | The **stop_lat** field contains the latitude of a stop, station, or station entrance. |
| stop_lon | Longitude | **Required** | The **stop_lon** field contains the longitude of a stop, station, or station entrance. |
-| zone_id | ID | Optional | The **zone_id** field defines the fare zone for a stop ID. Zone IDs are required if you want to provide fare information using [fare_rules.txt](#fare_rulestxt). If this stop ID represents a station, the zone ID is ignored. |
+| zone_id | ID | **Conditionally required** | The **zone_id** field defines the fare zone for a stop ID. This field is required if you want to provide fare information using [fare_rules.txt](#fare_rulestxt), otherwise it is optional. If this stop ID represents a station, the zone ID is ignored. |
| stop_url | URL | Optional | The **stop_url** field contains the URL of a web page about a particular stop. This should be different from the agency_url and the route_url fields. |
| location_type | Enum | Optional | The **location_type** field identifies whether this stop ID represents a stop, station, or station entrance. If no location type is specified, or the location_type is blank, stop IDs are treated as stops. Stations may have different properties from stops when they are represented on a map or used in trip planning. The location type field can have the following values: |
| | | | * **0** or blank - Stop. A location where passengers board or disembark from a transit vehicle. |
@@ -151,7 +151,7 @@ File: **Required**
| Field Name | Type | Required | Details |
| ------ | ------ | ------ | ------ |
| route_id | ID | **Required** | The **route_id** field contains an ID that uniquely identifies a route. |
-| agency_id | ID | Optional | The **agency_id** field defines an agency for the specified route. This value is referenced from the [agency.txt](#agencytxt) file. Use this field when you are providing data for routes from more than one agency. |
+| agency_id | ID | **Conditionally required** | The **agency_id** field defines an agency for the specified route. This value is referenced from the [agency.txt](#agencytxt) file. This field is required for feeds that contain more than one transit agency in [agency.txt](#agencytxt), otherwise it is optional. |
| route_short_name | Text | **Conditionally required** | The **route_short_name** contains the short name of a route. This will often be a short, abstract identifier like "32", "100X", or "Green" that riders use to identify a route, but which doesn't give any indication of what places the route serves. At least one of *route_short_name* or *route_long_name* must be specified, or potentially both if appropriate. If the route does not have a short name, please specify a *route_long_name* and use an empty string as the value for this field. |
| route_long_name | Text | **Conditionally required** | The **route_long_name** contains the full name of a route. This name is generally more descriptive than the *route_short_name* and will often include the route's destination or stop. At least one of *route_short_name* or *route_long_name* must be specified, or potentially both if appropriate. If the route does not have a long name, please specify a *route_short_nam*e and use an empty string as the value for this field. |
| route_desc | Text | Optional | The **route_desc** field contains a description of a route. Please provide useful, quality information. Do not simply duplicate the name of the route. For example, "**A** trains operate between Inwood-207 St, Manhattan and Far Rockaway-Mott Avenue, Queens at all times. Also from about 6AM until about midnight, additional **A** trains operate between Inwood-207 St and Lefferts Boulevard (trains typically alternate between Lefferts Blvd and Far Rockaway)." |
@@ -219,14 +219,14 @@ File: **Required**
| Field Name | Type | Required | Details |
| ------ | ------ | ------ | ------ |
| trip_id | ID | **Required** | The **trip_id** field contains an ID that identifies a trip. This value is referenced from the [trips.txt](#tripstxt) file. |
-| arrival_time | Time | **Required** | The **arrival_time** specifies the arrival time at a specific stop for a specific trip on a route. The time is measured from "noon minus 12h" (effectively midnight, except for days on which daylight savings time changes occur) at the beginning of the service day. For times occurring after midnight on the service day, enter the time as a value greater than 24:00:00 in HH:MM:SS local time for the day on which the trip schedule begins. If you don't have separate times for arrival and departure at a stop, enter the same value for **arrival_time** and **departure_time**.
Scheduled stops where the vehicle strictly adheres to the specified arrival and departure times are timepoints. For example, if a transit vehicle arrives at a stop before the scheduled departure time, it will hold until the departure time. If this stop is not a timepoint, use either an empty string value for the **arrival_time** field or provide an interpolated time. Further, indicate that interpolated times are provided via the **timepoint** field with a value of zero. If interpolated times are indicated with **timepoint**=0, then time points must be indicated with a value of 1 for the **timepoint** field. Provide arrival times for all stops that are time points.
An arrival time must be specified for the first and the last stop in a trip. Times must be eight digits in HH:MM:SS format (H:MM:SS is also accepted, if the hour begins with 0). Do not pad times with spaces. The following columns list stop times for a trip and the proper way to express those times in the **arrival_time** field: | |
+| arrival_time | Time | **Conditionally required** | The **arrival_time** specifies the arrival time at a specific stop for a specific trip on a route. The time is measured from "noon minus 12h" (effectively midnight, except for days on which daylight savings time changes occur) at the beginning of the service day. For times occurring after midnight on the service day, enter the time as a value greater than 24:00:00 in HH:MM:SS local time for the day on which the trip schedule begins. If you don't have separate times for arrival and departure at a stop, enter the same value for **arrival_time** and **departure_time**.
Scheduled stops where the vehicle strictly adheres to the specified arrival and departure times are timepoints. For example, if a transit vehicle arrives at a stop before the scheduled departure time, it will hold until the departure time. If this stop is not a timepoint, use either an empty string value for the **arrival_time** field or provide an interpolated time. Further, indicate that interpolated times are provided via the **timepoint** field with a value of zero. If interpolated times are indicated with **timepoint**=0, then time points must be indicated with a value of 1 for the **timepoint** field. This field is required for all stops that are time points and the first and last stop in a trip, otherwise it is optional.
Times must be eight digits in HH:MM:SS format (H:MM:SS is also accepted, if the hour begins with 0). Do not pad times with spaces. The following columns list stop times for a trip and the proper way to express those times in the **arrival_time** field: | |
| | | | **Time** => **arrival_time value** |
| | | | 08:10:00 A.M. => 08:10:00 or 8:10:00 |
| | | | 01:05:00 P.M. => 13:05:00 |
| | | | 07:40:00 P.M. => 19:40:00 |
| | | | 01:55:00 A.M. => 25:55:00 |
| | | | **Note:** Trips that span multiple dates will have stop times greater than 24:00:00. For example, if a trip begins at 10:30:00 p.m. and ends at 2:15:00 a.m. on the following day, the stop times would be 22:30:00 and 26:15:00. Entering those stop times as 22:30:00 and 02:15:00 would not produce the desired results. |
-| departure_time | Time | **Required** | The **departure_time** specifies the departure time from a specific stop for a specific trip on a route. The time is measured from "noon minus 12h" (effectively midnight, except for days on which daylight savings time changes occur) at the beginning of the service day. For times occurring after midnight on the service day, enter the time as a value greater than 24:00:00 in HH:MM:SS local time for the day on which the trip schedule begins. If you don't have separate times for arrival and departure at a stop, enter the same value for **arrival_time** and **departure_time**.
Scheduled stops where the vehicle strictly adheres to the specified arrival and departure times are timepoints. For example, if a transit vehicle arrives at a stop before the scheduled departure time, it will hold until the departure time. If this stop is not a timepoint, use either an empty string value for the **departure_time** field or provide an interpolated time (further, indicate that interpolated times are provided via the **timepoint** field with a value of zero). If interpolated times are indicated with **timepoint**=0, then time points must be indicated with a value of 1 for the **timepoint** field. Provide departure times for all stops that are time points.
A departure time must be specified for the first and the last stop in a trip even if the vehicle does not allow boarding at the last stop. Times must be eight digits in HH:MM:SS format (H:MM:SS is also accepted, if the hour begins with 0). Do not pad times with spaces. The following columns list stop times for a trip and the proper way to express those times in the **departure_time** field: |
+| departure_time | Time | **Conditionally required** | The **departure_time** specifies the departure time from a specific stop for a specific trip on a route. The time is measured from "noon minus 12h" (effectively midnight, except for days on which daylight savings time changes occur) at the beginning of the service day. For times occurring after midnight on the service day, enter the time as a value greater than 24:00:00 in HH:MM:SS local time for the day on which the trip schedule begins. If you don't have separate times for arrival and departure at a stop, enter the same value for **arrival_time** and **departure_time**.
Scheduled stops where the vehicle strictly adheres to the specified arrival and departure times are timepoints. For example, if a transit vehicle arrives at a stop before the scheduled departure time, it will hold until the departure time. If this stop is not a timepoint, use either an empty string value for the **departure_time** field or provide an interpolated time (further, indicate that interpolated times are provided via the **timepoint** field with a value of zero). If interpolated times are indicated with **timepoint**=0, then time points must be indicated with a value of 1 for the **timepoint** field. This field is required for all stops that are time points and the first and last stop in a trip, even if the vehicle does not allow boarding at the last stop. Otherwise this field is optional.
Times must be eight digits in HH:MM:SS format (H:MM:SS is also accepted, if the hour begins with 0). Do not pad times with spaces. The following columns list stop times for a trip and the proper way to express those times in the **departure_time** field: |
| | | | **Time** => **departure_time value** |
| | | | 08:10:00 A.M. => 08:10:00 or 8:10:00 |
| | | | 01:05:00 P.M. => 13:05:00 |
@@ -328,7 +328,7 @@ File: **Optional**
| | | | * **1** - Passenger may transfer once. |
| | | | * **2** - Passenger may transfer twice. |
| | | | * **(empty)** - If this field is empty, unlimited transfers are permitted. |
-| agency_id | ID | Optional | Required for feeds with multiple agencies defined in the agency.txt file. Each fare attribute must specify an agency_id value to indicate which agency the fare applies to. |
+| agency_id | ID | **Conditionally required** | Each fare attribute must specify an agency_id value to indicate which agency the fare applies to. This field is required for feeds that contain more than one transit agency in [agency.txt](#agencytxt), otherwise it is optional.|
| transfer_duration | Non-negative integer | Optional | The **transfer_duration** field specifies the length of time in seconds before a transfer expires. When used with a **transfers** value of 0, the **transfer_duration** field indicates how long a ticket is valid for a fare where no transfers are allowed. Unless you intend to use this field to indicate ticket validity, **transfer_duration** should be omitted or empty when **transfers** is set to 0. |
### fare_rules.txt