I changed the colouring so that at the beginning od the evening session, the prior session is no longer visible (is this what you wanted?).
As to time change, I can’t spot any glitch:
ONCE FromD = 080000
dCond = (OpenDayOfWeek >= 1 AND OpenDayOfWeek <= 5)
//////////////////////////////// Cash session 1 (8.00am-4.35pm)
ONCE ToD1 = 163000
ONCE CurO1 = open
ONCE PrevO1 = open
ONCE CurH1 = high
ONCE PrevH1 = high
ONCE CurL1 = low
ONCE PrevL1 = low
ONCE CurC1 = close
ONCE PrevC1 = close
tCond1 = OpenTime >= FromD AND OpenTime <= ToD1
IF OpenTime = FromD THEN
t = 255
PrevO1 = CurO1
PrevH1 = CurH1
PrevL1 = CurL1
PrevC1 = CurC1
CurO1 = open
CurH1 = open
CurL1 = open
// CurC1 = close
ENDIF
IF dCond AND tCond1 THEN
IF CurL1 = CurO1 THEN
CurH1 = high
CurL1 = low
ENDIF
CurH1 = max(CurH1,high)
CurL1 = min(CurL1,low)
CurC1 = close
ENDIF
//////////////////////////////// Cash session 2 (8.00am-9.00pm)
ONCE ToD2 = 205500
ONCE CurO2 = open
ONCE PrevO2 = open
ONCE CurH2 = high
ONCE PrevH2 = high
ONCE CurL2 = low
ONCE PrevL2 = low
ONCE CurC2 = close
ONCE PrevC2 = close
tCond2 = OpenTime >= FromD AND OpenTime <= ToD2
IF OpenTime = FromD THEN
PrevO2 = CurO2
PrevH2 = CurH2
PrevL2 = CurL2
PrevC2 = CurC2
CurO2 = open
CurH2 = open
CurL2 = open
// CurC2 = close
ENDIF
IF dCond AND tCond2 THEN
IF CurL2 = CurO2 THEN
CurH2 = high
CurL2 = low
ENDIF
CurH2 = max(CurH2,high)
CurL2 = min(CurL2,low)
CurC2 = close
ENDIF
IF OpenTime >= ToD1 THEN
t = 0
ENDIF
RETURN PrevO1 coloured(255,140,0,t) STYLE(line,3) AS "Previous day Open 4.35pm", PrevH1 coloured(0,0,255,t) STYLE(line,3) AS "Previous day High 4.35pm", PrevL1 coloured(0,0,255,t) STYLE(line,3) AS "Previous day Low 4.35pm", PrevC1 coloured(0,0,0,7) STYLE(line,3) AS "Previous day Close 4.35pm", PrevO2 coloured(255,180,0) STYLE(line,1) AS "Previous day Open 9.00pm", PrevH2 coloured(50,50,255,255) STYLE(line,1) AS "Previous day High 9.00pm", PrevL2 coloured(50,50,255,255) STYLE(line,1) AS "Previous day Low 9.00pm", PrevC2 coloured(50,50,50) STYLE(line,1) AS "Previous day Close 9.00pm"