Index: cpp/frams/config/f0-SDK.def
===================================================================
--- cpp/frams/config/f0-SDK.def	(revision 753)
+++ cpp/frams/config/f0-SDK.def	(revision 754)
@@ -3,5 +3,5 @@
 GROUP(Visual)
 PROP(se,0,1024,startenergy,f,,,,startenergy)
-PROP(Vstyle,1,0,vis_style,s,0,-1,,vis_style)
+PROP(Vstyle,1,0,vis_style,s,0,0,,vis_style)
 ENDCLASS
 
@@ -27,5 +27,5 @@
 PROP(rz,0,1024,rot.z,f,,,,rot.z)
 PROP(i,1,0,`info',s,,,,info)
-PROP(Vstyle,2,0,vis_style,s,0,-1,part,vis_style)
+PROP(Vstyle,2,0,vis_style,s,0,0,part,vis_style)
 XPROP(vs,2,0,visual thickness,f,0.05,0.7,0.2,vsize)
 XPROP(vr,2,0,red component,f,0.0,1.0,1.0,vcolor.x)
@@ -52,5 +52,5 @@
 PROP(stam,2,0,stamina,f,0.0,1.0,0.25,stamina)
 PROP(i,2,0,`info',s,,,,info)
-PROP(Vstyle,3,0,vis_style,s,0,-1,joint,vis_style)
+PROP(Vstyle,3,0,vis_style,s,0,0,joint,vis_style)
 XPROP(vr,3,0,red component,f,0.0,1.0,1.0,vcolor.x)
 XPROP(vg,3,1024,green component,f,0.0,1.0,1.0,vcolor.y)
@@ -70,5 +70,5 @@
 PROP(stam,2,0,stamina,f,0.0,1.0,0.25,stamina)
 PROP(i,2,0,`info',s,,,,info)
-PROP(Vstyle,3,0,vis_style,s,0,-1,joint,vis_style)
+PROP(Vstyle,3,0,vis_style,s,0,0,joint,vis_style)
 XPROP(vr,3,0,red component,f,0.0,1.0,1.0,vcolor.x)
 XPROP(vg,3,1024,green component,f,0.0,1.0,1.0,vcolor.y)
@@ -84,5 +84,5 @@
 PROP(d,1,0,details,s,,,N,details,GETSET)
 PROP(i,1,0,`info',s,,,,info)
-PROP(Vstyle,2,0,vis_style,s,0,-1,neuro,vis_style)
+PROP(Vstyle,2,0,vis_style,s,0,0,neuro,vis_style)
 PROP(getInputCount,0,1+2,`input count',d,,,,inputCount,GETONLY)
 PROP(getInputNeuroDef,0,1+2,`get input neuron',p oNeuroDef(d),,,,p_getInputNeuroDef,PROCEDURE)
Index: cpp/frams/config/f0.def
===================================================================
--- cpp/frams/config/f0.def	(revision 753)
+++ cpp/frams/config/f0.def	(revision 754)
@@ -3,5 +3,5 @@
 GROUP(Visual)
 PROP(se,0,1024,startenergy,f,,,,startenergy)
-PROP(Vstyle,1,0,vis_style,s,0,-1,,vis_style)
+PROP(Vstyle,1,0,vis_style,s,0,0,,vis_style)
 ENDCLASS
 
@@ -27,5 +27,5 @@
 PROP(rz,0,1024,rot.z,f,,,,rot.z)
 PROP(i,1,0,`info',s,,,,info)
-PROP(Vstyle,2,0,vis_style,s,0,-1,part,vis_style)
+PROP(Vstyle,2,0,vis_style,s,0,0,part,vis_style)
 XPROP(vs,2,0,visual thickness,f,0.05,0.7,0.2,vsize)
 XPROP(vr,2,0,red component,f,0.0,1.0,1.0,vcolor.x)
@@ -52,5 +52,5 @@
 PROP(stam,2,0,stamina,f,0.0,1.0,0.25,stamina)
 PROP(i,2,0,`info',s,,,,info)
-PROP(Vstyle,3,0,vis_style,s,0,-1,joint,vis_style)
+PROP(Vstyle,3,0,vis_style,s,0,0,joint,vis_style)
 XPROP(vr,3,0,red component,f,0.0,1.0,1.0,vcolor.x)
 XPROP(vg,3,1024,green component,f,0.0,1.0,1.0,vcolor.y)
@@ -70,5 +70,5 @@
 PROP(stam,2,0,stamina,f,0.0,1.0,0.25,stamina)
 PROP(i,2,0,`info',s,,,,info)
-PROP(Vstyle,3,0,vis_style,s,0,-1,joint,vis_style)
+PROP(Vstyle,3,0,vis_style,s,0,0,joint,vis_style)
 XPROP(vr,3,0,red component,f,0.0,1.0,1.0,vcolor.x)
 XPROP(vg,3,1024,green component,f,0.0,1.0,1.0,vcolor.y)
@@ -84,5 +84,5 @@
 PROP(d,1,0,details,s,,,N,details,GETSET)
 PROP(i,1,0,`info',s,,,,info)
-PROP(Vstyle,2,0,vis_style,s,0,-1,neuro,vis_style)
+PROP(Vstyle,2,0,vis_style,s,0,0,neuro,vis_style)
 PROP(getInputCount,0,1+2,`input count',d,,,,inputCount,GETONLY)
 PROP(getInputNeuroDef,0,0,`get input neuron',p oNeuroDef(d),,,,p_getInputNeuroDef,PROCEDURE)
Index: cpp/frams/model/f0-SDK-classes.h
===================================================================
--- cpp/frams/model/f0-SDK-classes.h	(revision 753)
+++ cpp/frams/model/f0-SDK-classes.h	(revision 754)
@@ -10,5 +10,5 @@
  {"Visual",},
  {"se",0,1024,"startenergy","f",FIELD(startenergy),},
- {"Vstyle",1,0,"vis_style","s 0 -1 ",FIELD(vis_style),},
+ {"Vstyle",1,0,"vis_style","s 0 0 ",FIELD(vis_style),},
  {0,0,0,}
 };
@@ -44,5 +44,5 @@
  {"rz",0,1024,"rot.z","f",FIELD(rot.z),},
  {"i",1,0,"info","s",FIELD(info),},
- {"Vstyle",2,0,"vis_style","s 0 -1 part",FIELD(vis_style),},
+ {"Vstyle",2,0,"vis_style","s 0 0 part",FIELD(vis_style),},
  {"vs",2,0,"visual thickness","f 0.05 0.7 0.2",FIELD(vsize),},
  {"vr",2,0,"red component","f 0.0 1.0 1.0",FIELD(vcolor.x),},
@@ -88,5 +88,5 @@
  {"stam",2,0,"stamina","f 0.0 1.0 0.25",FIELD(stamina),},
  {"i",2,0,"info","s",FIELD(info),},
- {"Vstyle",3,0,"vis_style","s 0 -1 joint",FIELD(vis_style),},
+ {"Vstyle",3,0,"vis_style","s 0 0 joint",FIELD(vis_style),},
  {"vr",3,0,"red component","f 0.0 1.0 1.0",FIELD(vcolor.x),},
  {"vg",3,1024,"green component","f 0.0 1.0 1.0",FIELD(vcolor.y),},
@@ -121,5 +121,5 @@
  {"stam",2,0,"stamina","f 0.0 1.0 0.25",FIELD(stamina),},
  {"i",2,0,"info","s",FIELD(info),},
- {"Vstyle",3,0,"vis_style","s 0 -1 joint",FIELD(vis_style),},
+ {"Vstyle",3,0,"vis_style","s 0 0 joint",FIELD(vis_style),},
  {"vr",3,0,"red component","f 0.0 1.0 1.0",FIELD(vcolor.x),},
  {"vg",3,1024,"green component","f 0.0 1.0 1.0",FIELD(vcolor.y),},
@@ -150,5 +150,5 @@
  {"d",1,0,"details","s",GETSET(details),},
  {"i",1,0,"info","s",FIELD(info),},
- {"Vstyle",2,0,"vis_style","s 0 -1 neuro",FIELD(vis_style),},
+ {"Vstyle",2,0,"vis_style","s 0 0 neuro",FIELD(vis_style),},
  {"getInputCount",0,1+2,"input count","d",GETONLY(inputCount),},
  {"getInputNeuroDef",0,1+2,"get input neuron","p oNeuroDef(d)",PROCEDURE(p_getInputNeuroDef),},
Index: cpp/frams/param/param.cpp
===================================================================
--- cpp/frams/param/param.cpp	(revision 753)
+++ cpp/frams/param/param.cpp	(revision 754)
@@ -1,4 +1,4 @@
 // This file is a part of Framsticks SDK.  http://www.framsticks.com/
-// Copyright (C) 1999-2017  Maciej Komosinski and Szymon Ulatowski.
+// Copyright (C) 1999-2018  Maciej Komosinski and Szymon Ulatowski.
 // See LICENSE.txt for details.
 
@@ -801,8 +801,27 @@
 	{
 	case 'd':
-	{paInt a, b, c; if (getMinMaxIntFromTypeDef(t, a, b, c) == 1) return false; }
+	{
+		paInt a, b, c;
+		int have = getMinMaxIntFromTypeDef(t, a, b, c);
+		if (have == 1) return false;
+		if ((have >= 2) && (b < a) && (a != 0) && (b != -1)) return false; // max<min meaning 'undefined' is only allowed as "d 0 -1"
+	}
 		break;
 	case 'f':
-	{double a, b, c; if (getMinMaxDoubleFromTypeDef(t, a, b, c) == 1) return false; }
+	{
+		double a, b, c;
+		int have = getMinMaxDoubleFromTypeDef(t, a, b, c);
+		if (have == 1) return false;
+		if ((have >= 2) && (b < a) && (a != 0) && (b != -1)) return false; // max<min meaning 'undefined' is only allowed as "f 0 -1"
+	}
+		break;
+	case 's':
+	{
+		int a, b; SString c;
+		int have = getMinMaxStringFromTypeDef(t, a, b, c);
+		//if (have == 1) return false; //not sure?
+		if ((have >= 1) && (!((a == 0) || (a == 1)))) return false; // 'min' for string (single/multi) can be only 0 or 1
+		if ((have >= 2) && (b < 0)) return false; // max=0 means unlimited, max<0 is not allowed
+	}
 		break;
 	}
