function calcsp2(form,index)
{
  var min = parseFloat(form.mn1.value);
  var ds2 = parseFloat(form.km2.value);
  var ds3 = parseFloat(form.km3.value);
  var mii = parseFloat(form.mn4.value);
  var ds5 = parseFloat(form.mi2.value);
  var ds6 = parseFloat(form.mi3.value);

  var minkm = new fraczahl(60);
  var msckm = new fraczahl(60);
  var hmikm = new fraczahl(60);
  var minmi = new fraczahl(60);
  var mscmi = new fraczahl(60);
  var hmimi = new fraczahl(60);

  if(index==-1) { v=form.storev.value; if(v==0) return; }
  if(index==0) v=parseFloat(form.kmh.value);               // km h-1 (base)
  if(index==1) v=parseFloat(form.kmm.value)*60.;           // km min-1
  if(index==2)                                             // min / km (min)
    { aa1 = parseFloat(form.mkm1.value);
    aa2 = parseFloat(form.mkm2.value);
    if(!isFinite(aa2)) aa2 = 0;
    minkm.valin(aa1,aa2);
    v=60./minkm.decval; }
  if(index==3)                                             // min / km (sec)
    { aa1 = parseFloat(form.mkm1.value);
    aa2 = parseFloat(form.mkm2.value);
    if(!isFinite(aa1)) aa1 = 0;
    minkm.valin(aa1,aa2);
    v=60./minkm.decval; }
  if(index==4) v=3600./parseFloat(form.skm.value);         // sec / km
  if(index==5) v=parseFloat(form.km1.value)*60./min;       // km / mi1 min
  if(index==6)                                             // min / km2 km (min)
    { aa1 = parseFloat(form.mn21.value);
    aa2 = parseFloat(form.mn22.value);
    if(!isFinite(aa2)) aa2 = 0;
    msckm.valin(aa1,aa2);
    v=ds2*60./msckm.decval; }
  if(index==7)                                             // min / km2 km (sec)
    { aa1 = parseFloat(form.mn21.value);
    aa2 = parseFloat(form.mn22.value);
    if(!isFinite(aa1)) aa1 = 0;
    msckm.valin(aa1,aa2);
    v=ds2*60./msckm.decval; }
  if(index==8)                                             // h / km3 km (hou)
    { aa1 = parseFloat(form.hr31.value);
    aa2 = parseFloat(form.hr32.value);
    if(!isFinite(aa2)) aa2 = 0;
    hmikm.valin(aa1,aa2);
    v=ds3/hmikm.decval; }
  if(index==9)                                             // h / km3 km (min)
    { aa1 = parseFloat(form.hr31.value);
    aa2 = parseFloat(form.hr32.value);
    if(!isFinite(aa1)) aa1 = 0;
    hmikm.valin(aa1,aa2);
    v=ds3/hmikm.decval; }
  
  if(index==10)  v=parseFloat(form.mih.value)*1.609344;          // mi h-1
  if(index==11)  v=parseFloat(form.mim.value)*60.*1.609344;      // mi min-1
  if(index==12)                                             // min / mi (min)
    { aa1 = parseFloat(form.mmi1.value);
    aa2 = parseFloat(form.mmi2.value);
    if(!isFinite(aa2)) aa2 = 0;
        minmi.valin(aa1,aa2);
        v=60./minmi.decval*1.609344; }
  if(index==13)                                             // min / mi (sec)
    { aa1 = parseFloat(form.mmi1.value);
        aa2 = parseFloat(form.mmi2.value);
        if(!isFinite(aa1)) aa1 = 0;
        minmi.valin(aa1,aa2);
        v=60./minmi.decval*1.609344; }
  if(index==14) v=3600./parseFloat(form.smi.value)*1.609344;    // sec / mi
  if(index==15) v=parseFloat(form.mi4.value)*60./mii*1.609344;  // mi / mi1 min
  if(index==16)                                             // min / mi2 mi (min)
    { aa1 = parseFloat(form.mn51.value);
    aa2 = parseFloat(form.mn52.value);
    if(!isFinite(aa2)) aa2 = 0;
    msckm.valin(aa1,aa2);
    v=ds5*60./msckm.decval*1.609344; }
  if(index==17)                                             // min / mi2 mi (sec)
    { aa1 = parseFloat(form.mn51.value);
    aa2 = parseFloat(form.mn52.value);
    if(!isFinite(aa1)) aa1 = 0;
    msckm.valin(aa1,aa2);
    v=ds5*60./msckm.decval*1.609344; }
  if(index==18)                                             // h / mi3 km (hou)
    { aa1 = parseFloat(form.hr61.value);
    aa2 = parseFloat(form.hr62.value);
    if(!isFinite(aa2)) aa2 = 0;
    hmimi.valin(aa1,aa2);
    v=ds6/hmimi.decval*1.609344; }
  if(index==19)                                             // h / mi3 km (min)
    { aa1 = parseFloat(form.hr61.value);
        aa2 = parseFloat(form.hr62.value);
        if(!isFinite(aa1)) aa1 = 0;
        hmimi.valin(aa1,aa2);
        v=ds6/hmimi.decval*1.609344; }
  form.storev.value=v;
  
  form.kmh.value=ausga(form,v);                   // km h-1 (base)
  form.kmm.value=ausga(form,v/60.);               // km min-1
  minkm.decval = 60./v;                           // min / km
  form.mkm1.value=ausfst(minkm.integ(),0);        // min
  form.mkm2.value=ausfst(minkm.rest(),3);         // sec
  form.skm.value=ausga(form,3600./v);             // sec / km
  form.km1.value=ausga(form,v/60.*min);
  msckm.decval = ds2*60./v;
  form.mn21.value=ausfst(msckm.integ(),0);        // min
  form.mn22.value=ausfst(msckm.rest(),3);         // sec
  hmikm.decval = ds3/v;
  form.hr31.value=ausfst(hmikm.integ(),0);        // hou
  form.hr32.value=ausfst(hmikm.rest(),3);         // min
  
  form.mih.value=ausga(form,v/1.609344);          // mi h-1 (base)
  form.mim.value=ausga(form,v/60./1.609344);      // mi min-1
  minmi.decval = 60./v*1.609344;                  // min / mi
  form.mmi1.value=ausfst(minmi.integ(),0);        // min
  form.mmi2.value=ausfst(minmi.rest(),3);         // sec
  form.smi.value=ausga(form,3600./v*1.609344);    // sec / mi
  form.mi4.value=ausga(form,v/60.*mii/1.609344);
  mscmi.decval = ds5*60./v*1.609344;
  form.mn51.value=ausfst(mscmi.integ(),0);        // min
  form.mn52.value=ausfst(mscmi.rest(),3);         // sec
  hmimi.decval = ds6/v*1.609344;
  form.hr61.value=ausfst(hmimi.integ(),0);        // hou
  form.hr62.value=ausfst(hmimi.rest(),3);         // min
  return;
}
