Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 2a6292d096f75213cc1215a8e87df6c11a6e15a7)
+++ src/Parser/lex.ll	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Wed Aug  8 17:23:17 2018
- * Update Count     : 685
+ * Last Modified On : Wed Aug 29 15:02:41 2018
+ * Update Count     : 686
  */
 
@@ -410,6 +410,8 @@
 ">>="			{ NAMEDOP_RETURN(RSassign); }
 
-"~="			{ NAMEDOP_RETURN(Erange); }				// CFA
 "@="			{ NAMEDOP_RETURN(ATassign); }			// CFA
+"~="			{ NAMEDOP_RETURN(ErangeUpEq); }			// CFA
+"-~"			{ NAMEDOP_RETURN(ErangeDown); }			// CFA
+"-~="			{ NAMEDOP_RETURN(ErangeDownEq); }		// CFA
 
 				/* CFA, operator identifier */
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 2a6292d096f75213cc1215a8e87df6c11a6e15a7)
+++ src/Parser/parser.yy	(revision 933933c7028ae75d883ec7f91df299e7ee478fc3)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug  8 17:50:07 2018
-// Update Count     : 3998
+// Last Modified On : Wed Aug 29 16:44:17 2018
+// Update Count     : 4006
 //
 
@@ -186,4 +186,8 @@
 } // fieldDecl
 
+ExpressionNode *forInc( const OperKinds op ) {
+	return new ExpressionNode( build_constantInteger( *new string( op == OperKinds::LThan || op == OperKinds::LEThan ? "1" : "-1" ) ) );
+} // forInc
+
 ForCtrl * forCtrl( ExpressionNode * type, string * index, ExpressionNode * start, enum OperKinds compop, ExpressionNode * comp, ExpressionNode * inc ) {
 	return new ForCtrl(
@@ -290,5 +294,5 @@
 %token ANDassign	ERassign	ORassign				// &=	^=	|=
 
-%token Erange											// ~=
+%token ErangeUpEq	ErangeDown	ErangeDownEq			// ~=	-~	-~=
 %token ATassign											// @=
 
@@ -1138,10 +1142,10 @@
 				$$ = new ForCtrl( (ExpressionNode * )nullptr, (ExpressionNode * )nullptr, (ExpressionNode * )nullptr );
 			} else {
-				$$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), OperKinds::LThan, $1->clone(),
-							 new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
+				$$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ),
+							  OperKinds::LThan, $1->clone(), forInc( OperKinds::LThan ) );
 			} // if
 		}
 	| constant_expression inclexcl constant_expression	// CFA
-		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
+		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, forInc( $2 ) ); }
 	| constant_expression inclexcl constant_expression '~' constant_expression // CFA
 		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, $5 ); }
@@ -1154,6 +1158,6 @@
 			} else {
 				if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) {
-					$$ = forCtrl( $3, new string( identifier->name ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), OperKinds::LThan, $3->clone(),
-								 new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
+					$$ = forCtrl( $3, new string( identifier->name ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ),
+								  OperKinds::LThan, $3->clone(), forInc( OperKinds::LThan ) );
 				} else {
 					SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); $$ = nullptr;
@@ -1167,5 +1171,5 @@
 			} else {
 				if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) {
-					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $4, $5, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
+					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $4, $5, forInc( $4 ) );
 				} else {
 					SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); $$ = nullptr;
@@ -1194,6 +1198,10 @@
 	'~'
 		{ $$ = OperKinds::LThan; }
-	| Erange
+	| ErangeUpEq
 		{ $$ = OperKinds::LEThan; }
+	| ErangeDown
+		{ $$ = OperKinds::GThan; }
+	| ErangeDownEq
+		{ $$ = OperKinds::GEThan; }
  	;
 
