diff --git a/gof2d.js b/gof2d.js
index 4798d18c37cf9b5bc2e596c6ea54c4b183c3028a..eacba7df37e87046fb1f7495df2fe93d11c4c492 100644
--- a/gof2d.js
+++ b/gof2d.js
@@ -3,31 +3,32 @@
 	// sr/feedback/profile_s->GetSrCorrNames
 	// sr/feedback/profile_s/OrbitHorFast
 	let gofFactorsHor, gofFactorsVer;
-	let gofSt, gofFps, gofMaxFps, gofDataTs, gPos;
+	let gofSt, gofFps, gofDataTs, gPos;
+	let gofMaxFps = 25;
 	function getParam(param, defaultValue) {
 		if (document.location.search.indexOf(param+'=')>-1) return document.location.search.split(param+'=')[1].split('&')[0];
 		return defaultValue;
 	}
 	if (document.location.search.indexOf('machine=esrf')>-1 || document.location.search.indexOf('machine=gof_esrf')>-1) {
-		gofFactorsHor = {"": 1, "position": 100000, 'beta': 0.2, 'eta': 100, 'mu': 0.2, 'sigma': 20000000000};
-		gofFactorsVer = {"": 1, "position": 1, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000};
+		gofFactorsHor = {"": 1, "corr": 100000, 'beta': 0.2, 'eta': 100, 'mu': 0.2, 'sigma': 20000000000};
+		gofFactorsVer = {"": 1, "corr": 1, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000};
 	}
 	else if (document.location.search.indexOf('machine=gof_soleil')>-1) {
-		gofFactorsHor = {"": 1, "position": 50000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000000000};
-		gofFactorsVer = {"": 1, "position": 10000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000};
+		gofFactorsHor = {"": 1, "corr": 50000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000000000};
+		gofFactorsVer = {"": 1, "corr": 10000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000};
 	}
 	else if (document.location.search.indexOf('machine=elettra2')>-1) {
-		gofFactorsHor = {"": 1, "position": 500000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000000000};
-		gofFactorsVer = {"": 1, "position": 500000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000};
+		gofFactorsHor = {"": 1, "corr": 500000, 'beta': 0.2, 'eta': 50, 'mu': 0.2, 'sigma': 20000000000};
+		gofFactorsVer = {"": 1, "corr": 500000, 'beta': 0.1, 'eta': 100, 'mu': 0.2, 'sigma': 50000000000};
 	}
 	else {
-		gofFactorsHor = {"": 1, "position": getParam('positionScaleH', 0.005), 'beta': 0.5, 'eta': 100, 'mu': 0.2, 'sigma': 5000000000000};
-		gofFactorsVer = {"": 1, "position": getParam('positionScaleV', 0.005), 'beta': 0.25, 'eta': 100, 'mu': 0.2, 'sigma': 5000000000000};
+		gofFactorsHor = {"": 1, "corr": getParam('positionScaleH', 0.005), 'beta': 0.5, 'eta': 100, 'mu': 0.2, 'sigma': 5000000000000};
+		gofFactorsVer = {"": 1, "corr": getParam('positionScaleV', 0.005), 'beta': 0.25, 'eta': 100, 'mu': 0.2, 'sigma': 5000000000000};
 	}
 	let gof = document.location.search.indexOf('gof=')>-1? document.location.search.split('gof=')[1].split('&')[0]: '';
-	const gofTimeout = document.location.search.indexOf('gofTimeout=')>-1? document.location.search.split('gofTimeout=')[1].split('&')[0]: 40;
+	const gofTimeout = document.location.search.indexOf('gofTimeout=')>-1? document.location.search.split('gofTimeout=')[1].split('&')[0]: 10;
 	const gofPeriod = document.location.search.indexOf('gofPeriod=')>-1? document.location.search.split('gofPeriod=')[1].split('&')[0]: 200;
-	const gofDisplayerPeriod = document.location.search.indexOf('gofDisplayerPeriod=')>-1? document.location.search.split('gofDisplayerPeriod=')[1].split('&')[0]: 200;
+	const gofDisplayerPeriod = document.location.search.indexOf('gofDisplayerPeriod=')>-1? document.location.search.split('gofDisplayerPeriod=')[1].split('&')[0]: 40;
 	const gofVisibility = gof==''? 'hidden': 'visible';
 	const gofScaleType = 'slider';
 	const gofSimfacilities = [];
@@ -43,7 +44,7 @@
 	const gofScaleSteps = 10;
 	// let ruler = document.location.search.indexOf('ruler')>-1;
 	rulerInit();
-	main.addEventListener('mousemove', function(e) {getRulerPosition(main, e, 'sr');});
+	// main.addEventListener('mousemove', function(e) {getRulerposition(main, e, 'sr');});
 	if (ruler) {
 		main.style.cursor = 'crosshair';
 	}
@@ -56,12 +57,12 @@
 		const action = param.split('_')[1];
 		if (action=='set') {
 			localStorage.setItem('reference'+gof+dir, gofBuffer[dir=='hor'? 0: 1]);
-			$("#sr_gofreference"+dir).attr('gofVisibility', "visible");
+			$("#sr_gofreference"+dir).attr('visibility', "visible");
 		}
 		if (action=='clear') {
 			localStorage.removeItem('reference'+gof+dir);
 			localStorage.removeItem('scale'+gof+dir);
-			$("#sr_gofreference"+dir).attr('gofVisibility', "hidden");
+			$("#sr_gofreference"+dir).attr('visibility', "hidden");
 		}
 	}
 	function elapseHor(step, up) {
@@ -134,10 +135,6 @@
 	function fpsSet(v) {
 		gofMaxFps = v;
 	}
-/*
-$("#fps")[0].getBoundingClientRect();
-jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; position: absolute; background-color: yellow; left: 1480px; top: 450px;', class: 'some-class some-other-class',    title: 'now this div has a title!',}).appendTo('body');
-*/
 	function gofMenu(lattice, facilities, params) {
 		console.log('gofMenu',lattice, facilities, params, gui);
 		$('#notice').hide();
@@ -147,16 +144,19 @@ jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; pos
 		// params.gof = false;
 		$('.gofhor').css('display', 'none');
 		$('.gofver').css('display', 'none');
-		params.gof = document.location.search.indexOf('gof')>-1 && document.location.search.indexOf('=gof')==-1? 'position': '';
+		params.gof = document.location.search.indexOf('gof')>-1 && document.location.search.indexOf('=gof')==-1? 'corr': '';
 		if (document.location.search.indexOf('gof=')>-1) params.gof = document.location.search.split('gof=')[1].split('&')[0];
-		const options = ['', 'position', 'beta', 'eta', 'mu', 'sigma'];
-		if (options.indexOf(params.gof)==-1) params.gof = 'position';
+		const options = ['', 'corr'];
+		if (options.indexOf(params.gof)==-1) params.gof = 'corr';
 		gui.add(params, 'gof', options).name('gof H <img id="h" src="red.svg" style="margin-bottom: -4px;">&nbsp;&nbsp;&nbsp;V <img id="v" src="green.svg" style="margin-bottom: -4px;"> ').onChange(function() {gofSwitch(compData, params);});
 		const maxVer = Math.pow(10, Math.floor(Math.log10(gofFactorVer/1000))+2);
 		const maxHor = Math.pow(10, Math.floor(Math.log10(gofFactorHor/1000))+2);
-		menuParams['fps'] = 5;
-		gofFpsMenu = gui.add(menuParams, 'fps', 0.1, 20, 0.5).onChange(function() {fpsSet(menuParams['fps']);}); // .title('fps (max)')
+		menuParams['fps'] = gofMaxFps;
+		gofFpsMenu = gui.add(menuParams, 'fps', 0.5, 25, 0.5).onChange(function() {fpsSet(menuParams['fps']);}); // .title('fps (max)')
 		guiconf(gui, 'fps');
+		gPos = $("#fps").children().eq(1).children()[0].getBoundingClientRect();
+		jQuery('<div>', {id: 'fpsr',    style: 'z-index: 1000; min-width: 45px; min-height: 3px; position: absolute; background-color: yellow; left: '+(gPos.left+0)+'px; top: '+(gPos.top+gPos.height-3)+'px;', title: 'fps',}).appendTo('body');
+		// $('#fpsr').hide();
 		if (gofScaleType == 'slider') {
 			/*menuParams['ruler'] = ruler;
 			gui.add(menuParams, 'ruler').onChange(function() {rulerSwitch();});
@@ -220,11 +220,8 @@ jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; pos
 								  Math.round(compData[facility].pos[i][1] + f*1.05*Math.cos(beta))
 							);
 						}
-						appendSvg("path", {id:facility+"_gofhor", class: "gofhor trajectory "+facility, gofVisibility:gofVisibility, name:"gofhor", fill: "none", "stroke-width":"150", "stroke":"red", "stroke-opacity":"0.6", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_hor, false, false, '.svg-pan-zoom_viewport');
-						// appendSvg("path", {id:facility+"_gofreferencehor", class: "gofhor trajectory "+facility, gofVisibility:gofVisibility, name:"gofreferencehor", fill: "none", "stroke-width":"150", "stroke":"darkred", "stroke-opacity":"0.9", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_hor, false, false, '.svg-pan-zoom_viewport');
-						appendSvg("path", {id:facility+"_gofver", class: "gofver trajectory "+facility, gofVisibility:gofVisibility, name:"gofver", fill: "none", "stroke-width":"150", "stroke":"limegreen", "stroke-opacity":"0.6", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_ver, false, false, '.svg-pan-zoom_viewport');
-						// appendSvg("path", {id:facility+"_gofreferencever", class: "gofver trajectory "+facility, gofVisibility:gofVisibility, name:"gofreferencever", fill: "none", "stroke-width":"150", "stroke":"darkgreen", "stroke-opacity":"0.9", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_ver, false, false, '.svg-pan-zoom_viewport');
-						// console.log("path", {id:facility+"_gofhor", name:"gofhor", d: dver.join(' ')+' Z'});
+						appendSvg("path", {id:facility+"_gofhor", class: "gofhor trajectory "+facility, visibility:gofVisibility, name:"gofhor", fill: "none", "stroke-width":"150", "stroke":"red", "stroke-opacity":"0.6", d: dhor.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_hor, false, false, '.svg-pan-zoom_viewport');
+						appendSvg("path", {id:facility+"_gofver", class: "gofver trajectory "+facility, visibility:gofVisibility, name:"gofver", fill: "none", "stroke-width":"150", "stroke":"limegreen", "stroke-opacity":"0.6", d: dver.join(' ')+(lattice[facility].sections[0].chamber?' Z':'')}, gof_clicked_ver, false, false, '.svg-pan-zoom_viewport');
 					}
 				}
 				rulerScale('');
@@ -249,8 +246,6 @@ jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; pos
 	}
 	function gofSwitch(gofData, params) {
 		gof = params.gof;
-		// $("#sr_gofreferencehor").attr('gofVisibility', "hidden");
-		// $("#sr_gofreferencever").attr('gofVisibility', "hidden");
 		gofScaleHor.$fill.style.width = "50%";
 		gofScaleVer.$fill.style.width = "50%";
 		if (gofData.reader !== false) {
@@ -259,15 +254,14 @@ jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; pos
 		gofData.reader = false;
 		if (params.gof=='') {
 			for (let facility in gofData) {
-				if (typeof $('#'+facility+"_gofhor").attr('gofVisibility') != 'undefined') {
-					$('#'+facility+"_gofhor").attr('gofVisibility', "hidden");
-					$('#'+facility+"_gofver").attr('gofVisibility', "hidden");
-					// $('#'+facility+"_gofreferencehor").attr('gofVisibility', "hidden");
-					// $('#'+facility+"_gofreferencever").attr('gofVisibility', "hidden");
+				if (typeof $('#'+facility+"_gofhor").attr('visibility') != 'undefined') {
+					$('#'+facility+"_gofhor").attr('visibility', "hidden");
+					$('#'+facility+"_gofver").attr('visibility', "hidden");
 				}
 			}
 			$('.gofgauge').hide();
 			$('#fps').hide();
+			$('#fpsr').hide();
 			$('#scaleh').hide();
 			$('#scalev').hide();
 			$('#ruler').hide();
@@ -276,30 +270,28 @@ jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; pos
 			$('#trajectoryWidth').hide();
 			$('#application').hide();
 			$('#applicationReference').hide();
-			gofData.reader.clearInterval(); 
+			gofData.reader.clearInterval();
+			gofMaxFps = 0;
 		} 
 		else {
 			// $('#application').show();
 			// $('#applicationReference').show();
 			$('#fps').show();
+			$('#fpsr').show();
 			$('#scaleh').show();
 			$('#scalev').show();
 			$('#trajectoryWidth').show();
 			$('#ruler').show();
 			$('#notice').show();
-			gPos = $("#fps").children().eq(1).children()[0].getBoundingClientRect();
-			jQuery('<div>', {id: 'fpsr',    style: 'z-index: 1000; min-width: 45px; min-height: 3px; position: absolute; background-color: yellow; left: '+(gPos.left+0)+'px; top: '+(gPos.top+gPos.height-3)+'px;', class: 'some-class some-other-class',    title: 'now this div has a title!',}).appendTo('body');
 			for (let facility in gofData) {
-				if (typeof $('#'+facility+"_gofhor").attr('gofVisibility') != 'undefined') {
-					$('#'+facility+"_gofhor").attr('gofVisibility', "visible");
-					$('#'+facility+"_gofver").attr('gofVisibility', "visible");
+				if (typeof $('#'+facility+"_gofhor").attr('visibility') != 'undefined') {
+					$('#'+facility+"_gofhor").attr('visibility', "visible");
+					$('#'+facility+"_gofver").attr('visibility', "visible");
 				}
-				// console.log('#'+facility+"_gofhor", $('#'+facility+"_gofhor").attr('gofVisibility'), typeof gofData[facility]);
 				if (typeof gofData[facility] == 'undefined' || typeof gofData[facility].corrMap == 'undefined') continue;
 				gofData.oldIndex = facility;
 				gofRead(gofData, params);
 			}
-			/* */
 			displayer = setInterval(gofDisplay, gofDisplayerPeriod, params);
 			if (gofTimeout) {
 				setTimeout(gofRead, gofTimeout, gofData, params);
@@ -307,7 +299,6 @@ jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; pos
 			else {
 				gofData.reader = setInterval(gofRead, gofPeriod, gofData, params);
 			}
-			/* */
 			$('.gofhor').css('display', 'block');
 			$('.gofver').css('display', 'block');
 			gofFactorHor = localStorage.getItem('scale'+gof+'hor')!=null? localStorage.getItem('scale'+gof+'hor')-0: gofFactorsHor[menuParams.gof]*1000;
@@ -337,6 +328,9 @@ jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; pos
 				document.getElementById("vergauge").contentWindow.setVal(gofFactorsVer[params.gof]);
 				$('.gofgauge').show();
 			}
+			gPos = $("#fps").children().eq(1).children()[0].getBoundingClientRect();
+			$('#fpsr').css('left', gPos.left);
+			$('#fpsr').css('top', gPos.top+gPos.height-3);
 		}		
 	}
 	function gofRender(facility, gb, gof) {
@@ -392,7 +386,7 @@ jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; pos
 		const gofOldSt = gofSt;
 		gofSt = new Date();
 		gofFps = 1000/(gofSt-gofOldSt);
-		$('#fpsr').css('min-width', gofFps/20*gPos.width);
+		if (gofFps<30) $('#fpsr').css('min-width', gofFps/20*gPos.width);
 		// console.log(1000/(gofSt-gofOldSt));
 		$('#lt').html(gofSt.getFullYear()+'-'+pad(gofSt.getMonth()+1, 2)+'-'+pad(gofSt.getDate(), 2)+' '+pad(gofSt.getHours(), 2)+':'+pad(gofSt.getMinutes(), 2)+':'+pad(gofSt.getSeconds(), 2));
 		fetch((conf.gofUrl+'&machine='+machine+'&param='+params.gof).replace('?&','?'), {cache: "no-store"})
@@ -410,6 +404,12 @@ jQuery('<div>', {    id: 'id2',    style: 'min-width: 45px; min-height: 3px; pos
 			const gofMinPeriod = 1000/gofMaxFps;
 			const elapsed = new Date() - gofSt;
 			const gp = gofMinPeriod-elapsed > gofTimeout? gofMinPeriod-elapsed: gofTimeout;
-			setTimeout(gofRead, gp, gofData, params);
+			if (params.gof!='') setTimeout(gofRead, gp, gofData, params);
+		})
+		.catch((err) => {
+			const gofMinPeriod = 1000/gofMaxFps;
+			const elapsed = new Date() - gofSt;
+			const gp = gofMinPeriod-elapsed > gofTimeout? gofMinPeriod-elapsed: gofTimeout;
+			if (params.gof!='') setTimeout(gofRead, gp, gofData, params);
 		});
 	}