yes i am experiencing what you said. Maybe i think the answer is another counter? so how do i stop the first counter and start another? hmm?
thanks for your help! 
this is what i have so far:
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#include <TimeAlarms.h>
#include <Time.h>
#include <LiquidCrystal.h>
#include <SPI.h>
LiquidCrystal lcd(12,11,5,4,3,2);
int backLight = 10;
const int latchPin = 8;
const int dataPin = 9;
const int clockPin = 7;
byte switchVar = B00000000;
byte counter = 0;
byte SymbolPosition = 5;
const int numRows = 4;
const int numCols = 20;
const byte Symbol_1 = B10110000;
const byte Symbol_2 = B01111110;
/*Switch Binary Code Reference (in order according to breadboard)
32 == Down
64 == Up
129 == Right
2 == left
4 == Options
8 == Ok
16 == Back
*/
void setup()
{
pinMode (backLight, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, INPUT);
//RTC boot up
Wire.begin();
RTC.begin();
//lcd boot up screen
digitalWrite(backLight, HIGH);
lcd.begin(numCols,numRows);
lcd.setCursor(6,0);
lcd.print("WELCOME");
lcd.setCursor(1,1);
lcd.print("Dosing Pump Module");
lcd.setCursor(5,2);
lcd.print("By JUNBLUD");
lcd.setCursor(4,3);
lcd.print("Loading:");
for (int i = 0; i <= 100; i++)
{
lcd.setCursor(12,3);
if (i<100) lcd.print(" ");
if (i<10) lcd.print(" ");
lcd.print(i);
lcd.print("%");
delay(100);
}
delay(2000);
lcd.clear();
}
void time ()
{
DateTime now = RTC.now();
lcd.setCursor(12,0);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
}
void mainMenu()
{
lcd.setCursor(0,0);
lcd.print("Main Menu");
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(2,1);
lcd.print("Pump 1");
lcd.setCursor(0,2);
lcd.write(Symbol_1);
lcd.setCursor(2,2);
lcd.print("Pump 2");
lcd.setCursor(0,3);
lcd.write(Symbol_1);
lcd.setCursor(2,3);
lcd.print("Set Schedule");
lcd.setCursor(10,1);
lcd.write(Symbol_1);
lcd.setCursor(12,1);
lcd.print("Pump 3");
}
void pumpStatus(const char *pumpStatusNum)
{
lcd.setCursor(0,0);
lcd.print(pumpStatusNum);
lcd.setCursor(2,1);
lcd.print("Dosage 1 =");
lcd.setCursor(13,1);
lcd.print("00:00");
lcd.setCursor(2,2);
lcd.print("Dosage 2 =");
lcd.setCursor(13,2);
lcd.print("00:00");
}
void setScheduleMenu()
{
lcd.setCursor(0,0);
lcd.print("Set Schedule");
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(2,1);
lcd.print("Pump 1");
lcd.setCursor(0,2);
lcd.write(Symbol_1);
lcd.setCursor(2,2);
lcd.print("Pump 2");
lcd.setCursor(0,3);
lcd.write(Symbol_1);
lcd.setCursor(2,3);
lcd.print("Pump 3");
}
void adjustPump(const char *adjustPumpNum)
{
lcd.setCursor(0,0);
lcd.print(adjustPumpNum);
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(2,1);
lcd.print("Everyday at");
lcd.setCursor(0,2);
lcd.write(Symbol_1);
lcd.setCursor(2,2);
lcd.print("everyday at");
lcd.setCursor(0,3);
lcd.write(Symbol_1);
lcd.setCursor(2,3);
lcd.print("Amount 000ml");
}
void options()
{
lcd.setCursor(0,0);
lcd.print("Options");
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(2,1);
lcd.print("Pump Flush");
lcd.setCursor(0,2);
lcd.write(Symbol_1);
lcd.setCursor(2,2);
lcd.print("Manual Dose");
lcd.setCursor(0,3);
lcd.write(Symbol_1);
lcd.setCursor(2,3);
lcd.print("Schedule Reminder");
}
void pumpFlush()
{
lcd.setCursor(0,0);
lcd.print("Pump Flush");
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(2,1);
lcd.print("Flush Pump 1");
lcd.setCursor(0,2);
lcd.write(Symbol_1);
lcd.setCursor(2,2);
lcd.print("Flush Pump 2");
lcd.setCursor(0,3);
lcd.write(Symbol_1);
lcd.setCursor(2,3);
lcd.print("Flush Pump 3");
}
void scheduleReminder()
{
lcd.setCursor(0,0);
lcd.print("fist line goes here");
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(2,1);
lcd.print("second line goes here");
lcd.setCursor(0,2);
lcd.write(Symbol_1);
lcd.setCursor(2,2);
lcd.print("third line goes here");
lcd.setCursor(0,3);
lcd.write(Symbol_1);
lcd.setCursor(2,3);
lcd.print("forth line goes here");
}
void shiftRegister()
{
digitalWrite(backLight, HIGH);
digitalWrite(latchPin, HIGH);
delayMicroseconds(20);
digitalWrite(latchPin, LOW);
switchVar = shiftIn(dataPin, clockPin, MSBFIRST);
}
void loop()
{
while (counter == 0,1,2,3,4,5)
{
shiftRegister();
if(switchVar == 32)
{
delay(300);
counter+1 < SymbolPosition? counter++ : counter = 1;
}
shiftRegister();
if (switchVar == 64)
{
delay(300);
counter-1 > 0? counter--: counter = SymbolPosition-1;
}
switch(counter)
{
case 0:
mainMenu();
time();
break;
case 1:
lcd.setCursor(0,1);
lcd.write(Symbol_2);
lcd.setCursor(0,2);
lcd.write(Symbol_1);
lcd.setCursor(0,3);
lcd.write(Symbol_1);
lcd.setCursor(10,1);
lcd.write(Symbol_1);
break;
case 2:
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(0,2);
lcd.write(Symbol_2);
lcd.setCursor(0,3);
lcd.write(Symbol_1);
lcd.setCursor(10,1);
lcd.write(Symbol_1);
break;
case 3:
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(0,2);
lcd.write(Symbol_1);
lcd.setCursor(0,3);
lcd.write(Symbol_2);
lcd.setCursor(10,1);
lcd.write(Symbol_1);
break;
case 4:
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(0,2);
lcd.write(Symbol_1);
lcd.setCursor(0,3);
lcd.write(Symbol_1);
lcd.setCursor(10,1);
lcd.write(Symbol_2);
break;
case 5:
lcd.setCursor(0,1);
lcd.write(Symbol_2);
lcd.setCursor(0,2);
lcd.write(Symbol_1);
break;
case 6:
lcd.setCursor(0,1);
lcd.write(Symbol_1);
lcd.setCursor(0,2);
lcd.write(Symbol_2);
break;
}
{
if (counter == 1 && switchVar == 8)
{
delay(300);
counter = 5;
lcd.clear();
pumpStatus("Pump One");
{
if (switchVar == 32 && counter == 5)
{
counter = 6;
}
}
}
if (counter == 2 && switchVar == 8)
{
delay(300);
lcd.clear();
pumpStatus("Pump Two");
}
if (counter == 3 && switchVar == 8)
{
delay(300);
lcd.clear();
setScheduleMenu();
}
if (counter == 4 && switchVar == 8)
{
delay(300);
lcd.clear();
pumpStatus("Pump Three");
}
if (switchVar == 16)
{
delay(300);
lcd.clear();
counter = 0;
}
if (switchVar == 4)
{
delay(300);
lcd.clear();
options();
}
}
}
}