anchor.diff:                  'WHERE OBJECT_ID='+stop.objectID.ToString;
               oraQuery.Execute;
   //            oraQuery.CommitUpdates;
  -            log.WriteLn(oraQuery.SQL.Text, llSummary);
             finally
               oraQuery.free;
             end;
  
positive.code:     parts := aTime.Trim.Split([':']);
      if TryStrToInt(parts[0], h) and TryStrToInt(parts[1], m) then
      begin
        d := aBaseDay[0];
        while h>=24 do
        begin
          Inc(d);
          h := h-24;
        end;
        Result := EncodeDateTime(aBaseDay[2], aBaseDay[1], d, h, m, 0, 0)
      end
      else
        Result := EncodeDateTime(aBaseDay[2], aBaseDay[1], aBaseDay[0], 0, 0, 0, 0);
  
negative.code:   end;
  end;
  
  procedure TSantosProject.ReadChartChargerWarnings(aSession: TOraSession;
    aScenario: TScenario; const aTablePrefix: string; aCharger: Integer;
    const aName: string);
  var
    zero, t: TDateTime;
    minOfDay: Integer;
    query: TOraQuery;
    tableName: String;
    isNew, tableExists: Boolean;
    chgPeakBussesChart: TChart;
    chartID: string;
    name: string;
  const
    ChgPwrChartID = 'santosNumberWarn';
  begin
    if aName.IsEmpty
    then name := ' Charge Location ' + aCharger.ToString
    else name := aName;
    {$IFDEF DEBUG}
    Log.WriteLn('Loading peak busses warnings chart for: ' + name);
    {$ENDIF}
    zero := SantosTimeToDateTime('00:00', fBaseDay);
    tableName := aTablePrefix + 'EBUS_INDIC_DAT' + cINDIC_DAT_TYPE_GRID + aCharger.ToString.PadLeft(2,'0') + cINDIC_DAT_GRID_PEAK_BUSSES_WARN;
  
    tableExists := MyOraLib.TableExists(aSession, tableName);
  
    chartID := ChgPwrChartID + aCharger.ToString;
  
    TMonitor.Enter(aScenario.Charts);
    try
      isNew := not aScenario.Charts.TryGetValue(chartID, chgPeakBussesChart);
    finally
      TMonitor.Exit(aScenario.Charts);
    end;
  
    if isNew and tableExists then
    begin
      chgPeakBussesChart := TChartLines.Create(aScenario, 'Santos' , chartID, '' + name + ' Peak Busses Warnings',
                    'Charge Location ' + aCharger.ToString + ' peak busses warnings', True, 'line',
                TChartAxis.Create('Time (hour of day)', 'lightBlue', 'Time', 'h'),
                [ TChartAxis.Create('Peak Busses Warnings (-)', 'lightBlue', 'Dimensionless', '-')]);
    end;
  
    if Assigned(chgPeakBussesChart) then
    begin
      TMonitor.enter(chgPeakBussesChart);
      try
         // Clear
        if not isNew then
          chgPeakBussesChart.reset;
  
        if tableExists then
        begin
          query := TOraQuery.Create(nil);
          try
            query.Session := aSession;
            query.SQL.Text := 'SELECT LPAD(TRIM(X), 5, ''0'') as TIME,Y ' +
                              'FROM ' + tableName + ' ORDER BY TIME ASC';
            query.Open;
              while not Query.Eof do
              begin
                t := SantosTimeToDateTime(Query.FieldByName('TIME').AsString,fBaseDay);
                minOfDay := MinutesBetween(zero, t) *60;
                (chgPeakBussesChart as TChartLines).AddValue(
                  minOfDay,
                  [Query.FieldByName('Y').AsFloat]
                );
                Query.Next;
              end;
  
          finally
            query.Free;
          end;
        end;
  
        if isNew then
          aScenario.addChart(chgPeakBussesChart);
      finally
        TMonitor.Exit(chgPeakBussesChart);
      end;
    end;
  end;
  
  function TSantosProject.ReadScenario(const aID: string): TScenario;
  var
    oraSession: TOraSession;
  