public boolean cancel()
  {
    int bus_stop_id = database.busDatabase.find_id("path_id", "path", "route", route_id, "sequence", 1);
    int daily_timetable_id = database.busDatabase.find_id("daily_timetable_id", "daily_timetable", "kind", day_of_week, "route", route_id);
    int[] service_ids = database.busDatabase.select_ids("service", "timetable_line", "timing_point", bus_stop_id, "daily_timetable", daily_timetable_id, "service");
    int[] times = new int[service_ids.length];
    int i;

    for(i = 0; i < times.length;i++)
    {
      times[i] = database.busDatabase.find_id("time", "timetable_line", "service", service_ids[i], "timing_point", bus_stop_id);
    }
    i = 0;
    int next = 0;
    while(times[i] < timing_point)
    {
      next = times[i];
      i++;
    }

    if(next != 0)
      roster_id = database.busDatabase.select_ids("roster_id", "roster", "service_id", service_ids[i], "roster_id");
    else
      return false;

    for(i = 0; i < roster_id.length; i++)
      database.busDatabase.set_value("roster", roster_id[i], "running", 0);
    return true;
  }