function calc() {
	var v = parseFloat(document.form1.cap.value);
	var a= parseFloat(document.form1.a.value);
	var z= parseFloat(document.form1.z.value);
	var inc = parseInt(document.form1.incluso.value);
	var nr = parseInt (document.form1.nrrate.value);
	var m = parseInt (document.form1.versamenti.value);
	var h = parseFloat(document.form1.anni.value);
	var p = parseFloat(document.form1.per.value);
	var r = parseFloat(document.form1.rata.value);
	var d = parseInt(document.form1.mod.value);

	 if (d==2) var p = document.form1.per.value ;
	else if (inc==2) var p = document.form1.per.value = (h*m)-nr;
	else var p = document.form1.per.value = h*m;
	 if (inc==2) var a=document.form1.a.value=r*nr;
	else if (inc==1) var a = document.form1.a.value = a;


 {
var j=0;
var j1=0;
var j2=0;
var v=v;
var a=a; //anticipo
var z=z;
var i=0;
var ipo=0;
var tas=0;
var ani=0;
var p=p;
var c=0;

for (j=0; j<=100; j++)

  {
    i=j
    tas=(i/100)/m;
    ipo=Math.pow((1+tas),-p);
    ani=((1-Math.pow((1+tas),-p))/tas);
    if (inc==1) a= a;
    else a= r*nr;
    if (inc==1) c= ((v-a)-(z*ipo))/ani;
    else if (inc==2) c= (v-(z*ipo))/(nr+ani);
    v=v;
    p=p;
    z=z;
    
   	if (r<=c) 
   	 var x = i-1;
   	if (i>=30) alert("dati incongruenti");
   	if (i>=30) break;


  for (j1=0;j1<=100;j1++)
   {
   	var y=x+(j1/100);
    tas=(y/100)/m;
    ipo=Math.pow((1+tas),-p);
    ani=((1-Math.pow((1+tas),-p))/tas);
    if (inc==1) c= ((v-a)-(z*ipo))/ani;
    else if (inc==2) c= (v-(z*ipo))/(nr+ani);
   
    
    if (r<=c) 
   	 var q = y-(0.01); 
   	 
   for (j2=0;j2<=100;j2++)
    {
    var t=q+(j2/10000);
    tas=(t/100)/m;
    ipo=Math.pow((1+tas),-p);
    ani=((1-Math.pow((1+tas),-p))/tas);
    if (inc==1) c= ((v-a)-(z*ipo))/ani;
    else c= (v-(z*ipo))/(nr+ani);
     
    
    if (r<=c)
   	 return document.form1.tasso.value=t; 
    }
   }  	
  }
 }	
}