I2C lcd digital clock problem.HELP!

i am new with arduino and i need to make a digital clock.I found next programm and I've got a problem with it.
This is the programm:

#include "Wire.h"
#include "LiquidCrystal.h"

const int backlight=13;
const int buttonHr=7;//pin folosit la ajustarea orei
const int buttonMin=8;//pin folosit la ajustarea minutelor

int secs =0;
int mins =0;
int hrs=0;
boolean isAM=true;
int milliDivsecs=1000;
int milliDivMins=60000;
int millidivHrs=36000;

unsigned long prevmillis=0;

int interval =1000;
LiquidCrystal lcd(0);

void setup() { 
   lcd.setBacklight(HIGH);
  pinMode(buttonHr,INPUT);
  pinMode(buttonMin,INPUT);
  lcd.begin(16, 2);
  lcd.setCursor(5,0);
  lcd.print("00:00:00 AM");
  Serial.begin(9600);
}

void loop() {
  unsigned long currmillis=millis();
  //detecteaza apasare buton
   
  if(digitalRead(buttonHr)==HIGH)
    {delay(25);
    hrs=hrs+1;
    updateHrs();
    //actualizeaza AMPM la apasare buton
    if(hrs==12)
      {
        updateAMPM();
      }
      delay(300);
    }
    
    if(digitalRead(buttonMin)==HIGH)
   {
      delay(25);
      mins=mins+1;
      //Serial.println(mins);
      updateMin();
      delay(300);
    }
    if(currmillis-prevmillis<999)
      {
        //lcd.clear();
      prevmillis=currmillis;
     //lcd.setCursor(0,1);
     //lcd.print(currmillis);
      if(secs<10)
      {
        lcd.setCursor(12,0);
      lcd.print(secs);
      lcd.setCursor(11,0);
      lcd.print(0);
      }
      else
        {
          lcd.setCursor(11,0);
          lcd.print(secs);
        } 
            //obtine secunde de la timpul sistemului
            secs=(millis()/milliDivsecs)%60;      //da secundele din milisecunde
      }
      //afisare minute
      if(secs ==60)
            {
              mins=mins+1;
           updateMin();
            }
            
            
}
//update functia min
//cheama update-ul functiei am pm si pe cel al functiei ora
void updateMin()
{
   
if(mins==59)
 {
    hrs=hrs+1;
    updateHrs();//update ora
  }
    if(hrs==11 && mins>59)
    {
    updateAMPM();
    }
   if(mins>59)
   {
    mins =0;  //reseteaza minutele
   }
  //lcd.setCursor(8,0);
 //lcd.print("00");
  if(mins<10)
  {
    lcd.setCursor(9,0);
    lcd.print(mins);
    lcd.setCursor(8,0);
    lcd.print(0); 
}
  
  else
  {
    lcd.setCursor(8,0);
  lcd.print(mins);
  
}
  
}


//update-ul functiei ora

void updateHrs()
  {
    //afisare ora-trebuie fixata petru am pm
    if(hrs>12)
    {
      //resetare la 1
      hrs=1;
    }
    if(hrs< 10)
    {
      lcd.setCursor(5,0);
      lcd.print(" ");
      lcd.setCursor(6,0);
    }
    else
    {
      lcd.setCursor(5,0);
    }
    lcd.print(hrs);
  }
  
  
  void updateAMPM()
    {
      if (isAM)
      {
        isAM=false;
        lcd.setCursor(14,0);
        lcd.print("PM");
      }
      else
      {
        isAM=true;
      lcd.setCursor(14,0);
      lcd.print("AM");
      }
    }

On the lcd appears seconds ok but when seconds reaches 60,minutes instead 01(1 minutes) the lcd show 35 and i don't know why.
Please help !

You need to lock the minute counter once it increases, see bellow the modified loop:

bool minlock = false;  // <----- minute counter lock

void loop()
{
  unsigned long currmillis=millis();
  //detecteaza apasare buton
/*   
  if(digitalRead(buttonHr)==HIGH)
  {
    delay(25);
    hrs=hrs+1;
    updateHrs();
    //actualizeaza AMPM la apasare buton
    if(hrs==12)
    {
      updateAMPM();
    }
    delay(300);
  }
*/
/*
  if(digitalRead(buttonMin)==HIGH)
  {
    delay(25);
    mins=mins+1;
    //Serial.println(mins);
    updateMin();
    delay(300);
  }
*/
  if(currmillis-prevmillis < 999)
  {
    //lcd.clear();
    prevmillis=currmillis;
    //lcd.setCursor(0,1);
    //lcd.print(currmillis);
    if(secs < 10)
    {
      lcd.setCursor(12,0);
      lcd.print(secs);
      lcd.setCursor(11,0);
      lcd.print(0);
    }
    else
    {
      lcd.setCursor(11,0);
      lcd.print(secs);
    } 
    //obtine secunde de la timpul sistemului
    secs=(millis()/milliDivsecs)%60;      //da secundele din milisecunde
    //afisare minute
    // it seems here is a better place for this part of code
    if((secs == 59) && (minlock == false))
    {
      mins=mins+1;
      updateMin();
      minlock=true; // <--- lock mininute counter 
    }
    else if (secs != 59)
    {
      minlock=false; // <--- unlock mininute counter 
    }
  }
}

It works
Thank you!