diff --git a/pbx/ael/ael.flex b/pbx/ael/ael.flex
index 45cd1e0d4d76863d85af8704d607f596cb743c51..b4c785571c0d90076dcaf0a98a624aea3b979831 100644
--- a/pbx/ael/ael.flex
+++ b/pbx/ael/ael.flex
@@ -240,7 +240,7 @@ includes	{ STORE_POS; return KW_INCLUDES;}
 		} else {
 			STORE_LOC;
 			yylval->str = strdup(yytext);
-			yylval->str[strlen(yylval->str)-1] = '\0'; /* trim trailing ')' */
+			yylval->str[yyleng-1] = '\0'; /* trim trailing ')' */
 			unput(')');
 			BEGIN(0);
 			return word;
@@ -290,19 +290,13 @@ includes	{ STORE_POS; return KW_INCLUDES;}
 			yymore();
 		} else {
 			STORE_LOC;
-			yylval->str = strdup(yytext);
-			if(yyleng > 1 )
-				yylval->str[yyleng-1] = '\0'; /* trim trailing ')' */
 			BEGIN(0);
-			if ( !strcmp(yylval->str,")") ) {
-				free(yylval->str);
-				yylval->str = 0;
-				my_col++; /* XXX why ? */
+			if ( !strcmp(yytext, ")") )
 				return RP;
-			} else {
-				unput(')');
-				return word;
-			}
+			yylval->str = strdup(yytext);
+			yylval->str[yyleng-1] = '\0'; /* trim trailing ')' */
+			unput(')');
+			return word;
 		}
 	}
 
@@ -321,8 +315,7 @@ includes	{ STORE_POS; return KW_INCLUDES;}
 				/* printf("Got argg2 word %s\n", yylval->str); */
 				unput(',');
 				commaout = 1;
-				if (yyleng > 1 )
-					*(yylval->str+yyleng-1)=0;
+				yylval->str[yyleng-1] = '\0';
 				return word;
 			} else {
 				commaout = 0;
diff --git a/pbx/ael/ael_lex.c b/pbx/ael/ael_lex.c
index ba71f20b26e1bcbb8b739fc40d06eb63f5bd3394..3a8837964055b91e52cd595d040e4243c290ab8c 100644
--- a/pbx/ael/ael_lex.c
+++ b/pbx/ael/ael_lex.c
@@ -1348,7 +1348,7 @@ YY_RULE_SETUP
 		} else {
 			STORE_LOC;
 			yylval->str = strdup(yytext);
-			yylval->str[strlen(yylval->str)-1] = '\0'; /* trim trailing ')' */
+			yylval->str[yyleng-1] = '\0'; /* trim trailing ')' */
 			unput(')');
 			BEGIN(0);
 			return word;
@@ -1414,26 +1414,20 @@ YY_RULE_SETUP
 			yymore();
 		} else {
 			STORE_LOC;
-			yylval->str = strdup(yytext);
-			if(yyleng > 1 )
-				yylval->str[yyleng-1] = '\0'; /* trim trailing ')' */
 			BEGIN(0);
-			if ( !strcmp(yylval->str,")") ) {
-				free(yylval->str);
-				yylval->str = 0;
-				my_col++; /* XXX why ? */
+			if ( !strcmp(yytext, ")") )
 				return RP;
-			} else {
-				unput(')');
-				return word;
-			}
+			yylval->str = strdup(yytext);
+			yylval->str[yyleng-1] = '\0'; /* trim trailing ')' */
+			unput(')');
+			return word;
 		}
 	}
 	YY_BREAK
 case 49:
 /* rule 49 can match eol */
 YY_RULE_SETUP
-#line 309 "ael.flex"
+#line 303 "ael.flex"
 {
 		if( parencount != 0) { /* printf("Folding in a comma!\n"); */
 			yymore();
@@ -1449,8 +1443,7 @@ YY_RULE_SETUP
 				/* printf("Got argg2 word %s\n", yylval->str); */
 				unput(',');
 				commaout = 1;
-				if (yyleng > 1 )
-					*(yylval->str+yyleng-1)=0;
+				yylval->str[yyleng-1] = '\0';
 				return word;
 			} else {
 				commaout = 0;
@@ -1463,7 +1456,7 @@ YY_RULE_SETUP
 case 50:
 /* rule 50 can match eol */
 YY_RULE_SETUP
-#line 335 "ael.flex"
+#line 328 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop(c) ) { /* error */
@@ -1479,7 +1472,7 @@ YY_RULE_SETUP
 case 51:
 /* rule 51 can match eol */
 YY_RULE_SETUP
-#line 349 "ael.flex"
+#line 342 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		yymore();
@@ -1489,7 +1482,7 @@ YY_RULE_SETUP
 case 52:
 /* rule 52 can match eol */
 YY_RULE_SETUP
-#line 355 "ael.flex"
+#line 348 "ael.flex"
 {
 		char c = yytext[yyleng-1];
 		if ( pbcpop(c) ) { /* error */
@@ -1505,7 +1498,7 @@ YY_RULE_SETUP
 case 53:
 /* rule 53 can match eol */
 YY_RULE_SETUP
-#line 367 "ael.flex"
+#line 360 "ael.flex"
 {
 		STORE_LOC;
 		yylval->str = strdup(yytext);
@@ -1519,7 +1512,7 @@ YY_RULE_SETUP
 case 54:
 /* rule 54 can match eol */
 YY_RULE_SETUP
-#line 377 "ael.flex"
+#line 370 "ael.flex"
 {
 		FILE *in1;
 		char fnamebuf[1024],*p1,*p2;
@@ -1586,7 +1579,7 @@ case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(paren):
 case YY_STATE_EOF(semic):
 case YY_STATE_EOF(argg):
-#line 439 "ael.flex"
+#line 432 "ael.flex"
 {
 		if ( --include_stack_index < 0 ) {
 			yyterminate();
@@ -1602,10 +1595,10 @@ case YY_STATE_EOF(argg):
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 452 "ael.flex"
+#line 445 "ael.flex"
 ECHO;
 	YY_BREAK
-#line 1609 "ael_lex.c"
+#line 1602 "ael_lex.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -2735,7 +2728,7 @@ void ael_yyfree (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 452 "ael.flex"
+#line 445 "ael.flex"