Index: /cpp/common/nonstd_math.h
===================================================================
--- /cpp/common/nonstd_math.h	(revision 1301)
+++ /cpp/common/nonstd_math.h	(revision 1302)
@@ -25,5 +25,7 @@
 inline double rndDouble(double limit_exclusive) { return rndGetInstance().getDouble() * limit_exclusive; }
 inline unsigned int rndUint(unsigned int limit_exclusive) { return (unsigned int)(rndGetInstance().getDouble() * limit_exclusive); } //returns random from 0..limit_exclusive-1
+#ifndef __BORLANDC__ //for embarcadero 11u3, unsigned int and size_t are duplicates
 inline unsigned int rndUint(size_t limit_exclusive) {return rndUint((unsigned int)limit_exclusive);} //just an overload with size_t argument
+#endif
 unsigned int rndUint(int limit_exclusive); //just an overload with int argument
 inline void rndSetSeed(unsigned int seed) { rndGetInstance().setSeed(seed); }
Index: /cpp/frams/_demos/geneprops_graph.py
===================================================================
--- /cpp/frams/_demos/geneprops_graph.py	(revision 1301)
+++ /cpp/frams/_demos/geneprops_graph.py	(revision 1302)
@@ -43,5 +43,5 @@
         segs.append( ((len(n[0]),n[1]),(len(n[0])+1,child[1])) )
 
-linecol = LineCollection(segs, linewidths=2, linestyle='solid')
+linecol = LineCollection(segs, linewidths=2, linestyle='solid', color='#ddddff')
 ax.add_collection(linecol)
 
@@ -55,3 +55,4 @@
 
 ax.xaxis.set_visible(False)
+plt.tight_layout()
 plt.show()
Index: /cpp/frams/_demos/geneprops_test.cpp
===================================================================
--- /cpp/frams/_demos/geneprops_test.cpp	(revision 1301)
+++ /cpp/frams/_demos/geneprops_test.cpp	(revision 1302)
@@ -10,5 +10,5 @@
 Examples:
 
-- new experimental friction:
+- experimental exponential friction:
 $ ./geneprops_test f 3 -e | sort -n -k 2
 
@@ -94,7 +94,7 @@
 			case 'e': fun = ExperimentalExponential; break;
 			case 'h': printf("%s args: [modifier [max_count]] (one of " F14_MODIFIERS ")\n"
-				"\t-l = legacy function\n"
+				"\t-l = legacy\n"
 				"\t-n = modern, change=0.5, normalizeBiol4 disabled\n"
-				"\t-e = experimental exponential function\n", argv[0]);
+				"\t-e = experimental exponential\n", argv[0]);
 				return 0;
 			default: fprintf(stderr, "%s: invalid option: %s\n", argv[0], arg); return 2;
Index: /cpp/frams/genetics/f1/f1_conv.cpp
===================================================================
--- /cpp/frams/genetics/f1/f1_conv.cpp	(revision 1301)
+++ /cpp/frams/genetics/f1/f1_conv.cpp	(revision 1302)
@@ -23,5 +23,5 @@
 	  "- Full/NumberOfBranches - a compromise between the two other settings.\n"
 	  "- Full/(NumberOfBranches+1) - because the originating stick also counts as a branch. This setting guarantees that in the worst case, when at least two neighboring branches have sticks controlled by bending muscles and their controlling signals are at extreme values, the sticks can touch and overlap, but will not intersect. This setting is in most cases too strict because (1) all branches are very rarely controlled by muscles, (2) there are often 'empty' branches - multiple commas with no sticks in-between, and (3) the share of the originating stick is effectively wasted because this stick itself has no muscle at the branching point so it will not bend; the muscle bending range is symmetrical and the default range is equal for all muscles in a branching, but the sticks equipped with muscles in a branching are rarely evenly spaced.\n"
-	  "- Full: Always 1 (the complete angle) - because we do not have to care about the physical plausibility and avoid intersecting sticks, and other genetic representations do not impose such constraints, so this full angle setting can be useful as the default bending range when comparing the performance of various genetic encodings."},
+	  "- Full: always the complete angle - because we do not have to care about the physical plausibility and avoid intersecting sticks, and other genetic representations do not impose such constraints, so this full angle setting can be useful as the default bending range when comparing the performance of various genetic encodings."},
 
 	{ 0, },
@@ -331,6 +331,8 @@
 {
 	double len = std::min(2.0, c.length);
+	Part *p1 = model.getPart(part1);
+	Part *p2 = model.getPart(part2);
 	sprintf(tmp, "p1=%d,p2=%d,dx=%lg,rx=%lg,ry=%lg,rz=%lg,stam=%lg,vr=%g,vg=%g,vb=%g",
-		part1, part2, len, angle.x, angle.y, angle.z, c.stamina, c.cred, c.cgreen, c.cblue);
+		part1, part2, len, angle.x, angle.y, angle.z, c.stamina, (p1->vcolor.x+p2->vcolor.x)/2, (p1->vcolor.y+p2->vcolor.y)/2, (p1->vcolor.z+p2->vcolor.z)/2);
 	lastjoint_muscle_power = c.muscle_power;
 	return model.addFromString(Model::JointType, tmp, makeRange(g));
Index: /cpp/frams/model/modelparts.h
===================================================================
--- /cpp/frams/model/modelparts.h	(revision 1301)
+++ /cpp/frams/model/modelparts.h	(revision 1302)
@@ -103,5 +103,5 @@
 	};
 	static const char* getShapeName(Shape sh);
-	static constexpr double DEFAULT_STICK_RADIUS = 0.2; //used in SHAPETYPE_BALL_AND_STICK to SHAPETYPE_SOLIDS Model conversion
+	static constexpr double DEFAULT_STICK_RADIUS = 0.15; //used in odesim and in SHAPETYPE_BALL_AND_STICK to SHAPETYPE_SOLIDS Model conversion
 
 	double mass, size, density, friction, ingest, assim, hollow;
Index: /cpp/frams/param/param.cpp
===================================================================
--- /cpp/frams/param/param.cpp	(revision 1301)
+++ /cpp/frams/param/param.cpp	(revision 1302)
@@ -104,35 +104,35 @@
 }
 
-int ParamInterface::getMinMaxInt(int prop, paInt& minumum, paInt& maximum, paInt &def)
-{
-	return getMinMaxIntFromTypeDef(type(prop), minumum, maximum, def);
-}
-
-int ParamInterface::getMinMaxDouble(int prop, double& minumum, double& maximum, double& def)
-{
-	return getMinMaxDoubleFromTypeDef(type(prop), minumum, maximum, def);
-}
-
-int ParamInterface::getMinMaxString(int prop, int& minumum, int& maximum, SString& def)
-{
-	return getMinMaxStringFromTypeDef(type(prop), minumum, maximum, def);
-}
-
-int ParamInterface::getMinMaxIntFromTypeDef(const char* t, paInt& minumum, paInt& maximum, paInt &def)
+int ParamInterface::getMinMaxInt(int prop, paInt& minimum, paInt& maximum, paInt &def)
+{
+	return getMinMaxIntFromTypeDef(type(prop), minimum, maximum, def);
+}
+
+int ParamInterface::getMinMaxDouble(int prop, double& minimum, double& maximum, double& def)
+{
+	return getMinMaxDoubleFromTypeDef(type(prop), minimum, maximum, def);
+}
+
+int ParamInterface::getMinMaxString(int prop, int& minimum, int& maximum, SString& def)
+{
+	return getMinMaxStringFromTypeDef(type(prop), minimum, maximum, def);
+}
+
+int ParamInterface::getMinMaxIntFromTypeDef(const char* t, paInt& minimum, paInt& maximum, paInt &def)
 {
 	while (*t) if (*t == ' ') break; else t++;
-	return sscanf(t, PA_INT_SCANF " " PA_INT_SCANF " " PA_INT_SCANF, &minumum, &maximum, &def);
-}
-
-int ParamInterface::getMinMaxDoubleFromTypeDef(const char* t, double& minumum, double& maximum, double& def)
+	return sscanf(t, PA_INT_SCANF " " PA_INT_SCANF " " PA_INT_SCANF, &minimum, &maximum, &def);
+}
+
+int ParamInterface::getMinMaxDoubleFromTypeDef(const char* t, double& minimum, double& maximum, double& def)
 {
 	while (*t) if (*t == ' ') break; else t++;
-	return sscanf(t, "%lg %lg %lg", &minumum, &maximum, &def);
-}
-
-int ParamInterface::getMinMaxStringFromTypeDef(const char* t, int& minumum, int& maximum, SString& def)
+	return sscanf(t, "%lf %lf %lf", &minimum, &maximum, &def);
+}
+
+int ParamInterface::getMinMaxStringFromTypeDef(const char* t, int& minimum, int& maximum, SString& def)
 {
 	while (*t) if (*t == ' ') break; else t++;
-	int ret = sscanf(t, "%d %d", &minumum, &maximum);
+	int ret = sscanf(t, "%d %d", &minimum, &maximum);
 	def = SString::empty();
 	if (ret == 2)
Index: /cpp/frams/vm/classes/3dobject.cpp
===================================================================
--- /cpp/frams/vm/classes/3dobject.cpp	(revision 1301)
+++ /cpp/frams/vm/classes/3dobject.cpp	(revision 1302)
@@ -437,5 +437,5 @@
 		Pt3D d;
 		Pt3D src = point->p;
-		d -= center->p;
+		src -= center->p;
 		o.revTransform(d, src);
 		*ret = Pt3D_Ext::makeDynamicObject(new Pt3D_Ext(d));
