Pivot Point Code Help

 
I'm looking to get Yesterday's open price. In the following:
yesterday_close = CLOSE[cnt+1];
yesterday_open = OPEN[cnt+1];
today_open = OPEN[cnt];
OPEN[cnt+1] doesn't give me it. I'm confused. Here's the basic PP code, that's templated across most PP indicators.

var: cnt(0),how_long(720),
begin_bar(0),
prev_day(0), cur_day(0),
day_high(0),day_low(0),
yesterday_high(0),
yesterday_low(0),
yesterday_close(0),
yesterday_open(0),
today_open(0),
textvar(""),
current(0),
TRange(0),
YRange(0),
P(0),S(0),R(0),S1(0),R1(0),S2(0),R2(0),S3(0),R3(0),M5(0),M4(0),M3(0),M2(0),M1(0),M0(0),
timeShift(0),lastMinute(0),
prevTime(0);

for cnt = Bars downto 0
{
SetIndexValue(cnt, 0);
SetIndexValue2(cnt, 0);
};

if Period > 240 then exit;
timeShift = 0;

if how_long = -1 then
{
begin_bar = bars;
} else {
begin_bar = how_long;
};

If prevTime = Time then exit;


for cnt = begin_bar downto 1
{

cur_day = TimeDay(time[cnt]);

if prev_day != cur_day then
{
yesterday_close = CLOSE[cnt+1];
yesterday_open = OPEN[cnt+1];
today_open = OPEN[cnt];
yesterday_high = day_high;
yesterday_low = day_low;

MoveObject("dayChange",OBJ_VLINE,time[cnt],close[cnt],time[cnt],close[cnt],RED,1,STYLE_SOLID);

If TimeDayOfWeek(time[cnt])=2 Then
MoveObject("weekChange",OBJ_VLINE,time[cnt],close[cnt],time[cnt],close[cnt],BLUE,1,STYLE_SOLID);

day_high = HIGH[cnt];
day_low = LOW[cnt];

P = (yesterday_high + yesterday_low + yesterday_close + today_open) / 4;
R1 = (2*P)-yesterday_low;
S1 = (2*P)-yesterday_high;

R2 = P-S1+R1;
S2 = P-R1+S1;

R3 = (2*P)+(yesterday_high-(2*yesterday_low));
S3 = (2*P)-((2* yesterday_high)-yesterday_low);
M5 = (R2+R3)/2;
M4 = (R1+R2)/2;
M3 = (P+R1)/2;
M2 = (P+S1)/2;
M1 = (S1+S2)/2;
M0 = (S2+S3)/2;


YRange = 100 * (yesterday_high - yesterday_low);

prev_day = cur_day;
};
 
This works, but is there a better way?

cnt = 0;
cur_day = TimeDay(time[cnt]);
prev_day = TimeDay(time[cnt+1]);
//FIND THE PREVIOUS DAY.
While (prev_day = cur_day)
{
cnt++;
prev_day = TimeDay(time[cnt]);
};
aprev_Day = TimeDay(time[cnt+1]);
//Find Previous Day
While (aprev_day = prev_day)
{
cnt++;
aprev_day = TimeDay(time[cnt]);
};

yesterday_open = Close[cnt];
Reason: