// This function is used to balance the membrane potential to v_init (= -70 mV)
// written by Yiota Poirazi, July 2001, poirazi@LNC.usc.edu

proc current_balancein() {

  finitialize($1)
  fcurrent()

  printf("Balancing each compartment to %d mV\n", $1)

  forsec incell_list{
   for (x) {
    	if (ismembrane("na_ion")) {e_pas(x)=v(x)+ina(x)/g_pas(x)} 
   	if (ismembrane("k_ion")) {e_pas(x)=e_pas(x)+ik(x)/g_pas(x)} 

      	if (ismembrane("ca_ion")) {e_pas(x)=e_pas(x)+ica(x)/g_pas(x)}
//        if (ismembrane("Ca_ion")) {e_pas(x)=e_pas(x)+iCa(x)/g_pas(x)}
 //       if (ismembrane("in_ion")) {e_pas(x)=e_pas(x)+in(x)/g_pas(x)} //ican
       if (ismembrane("h")) {e_pas(x)=e_pas(x)+ihi(x)/g_pas(x)}

//        d = distance(1,x)
//	xdist = find_vector_distance_precise(secname(),x)    // calc. perpedicular distance      
  //	 printf("x = %e, xdist = %e, d = %e, e_pas = %e mV, rm = %e mA/(mVcm2)\n", x,  xdist, d, e_pas(x), 1./g_pas(x))
      //	fcurrent()
    }
  }

//finitialize(v_init)
fcurrent()
}



/*
        if (cvode.active()) {
        cvode.re_init()
        }       else {
        fcurrent()
        }
frecord_init()
*/