diff --git a/local/Makefile.in b/local/Makefile.in
index d775a61..1fe2a80 100644
--- a/local/Makefile.in
+++ b/local/Makefile.in
@@ -22,7 +22,7 @@
 	mib2c.array-user.conf mib2c.column_enums.conf \
 	mib2c.column_defines.conf mib2c.old-api.conf mib2c.scalar.conf \
 	mib2c.check_values.conf mib2c.check_values_local.conf \
-	mib2c.access_functions.conf \
+	mib2c.access_functions.conf mib2c.notify.conf \
 	mib2c.int_watch.conf
 CONFINSTALLDIR=$(snmplibdir)/snmpconf-data
 CONFDATASRC=snmpconf.dir
diff --git a/local/mib2c.access_functions.conf b/local/mib2c.access_functions.conf
index 5421600..01ad1ee 100644
--- a/local/mib2c.access_functions.conf
+++ b/local/mib2c.access_functions.conf
@@ -13,8 +13,8 @@
 @foreach $t table@
 /** User-defined data access functions for data in table $t */
 /** row level accessors */
-Netsnmp_First_Data_Point  ${i}_get_first_data_point;
-Netsnmp_Next_Data_Point   ${i}_get_next_data_point;
+Netsnmp_First_Data_Point  ${t}_get_first_data_point;
+Netsnmp_Next_Data_Point   ${t}_get_next_data_point;
 int ${t}_commit_row(void **my_data_context, int new_or_del);
 void * ${t}_create_data_context(netsnmp_variable_list *index_data);
 
diff --git a/local/mib2c.array-user.conf b/local/mib2c.array-user.conf
index 5962857..27b1e20 100644
--- a/local/mib2c.array-user.conf
+++ b/local/mib2c.array-user.conf
@@ -483,7 +483,7 @@
     snmp_log(LOG_ERR, "${i}_extract_index index list not implemented!\n" );
     return 0;
 #else
-       var_$idx.next_variable = &var_XX;
+       var_${idx}.next_variable = &var_XX;
 #endif
 
     @end@
@@ -510,19 +510,19 @@
              @eval $have_type = 0@
              @if "$idx.type" eq "ASN_OCTET_STR"@
              @eval $have_type = 1@
-                if(var_$idx.val_len > sizeof(ctx->$idx))
+                if(var_${idx}.val_len > sizeof(ctx->$idx))
                    err = -1;
                 else
-                    memcpy( ctx->$idx, var_$idx.val.string, var_$idx.val_len );
-                ctx->${idx}_len = var_$idx.val_len;
+                    memcpy( ctx->$idx, var_${idx}.val.string, var_${idx}.val_len );
+                ctx->${idx}_len = var_${idx}.val_len;
              @end@
              @if "$idx.type" eq "ASN_OBJECT_ID"@
              @eval $have_type = 1@
-                memcpy( ctx->$idx, var_$idx.val.string, var_$idx.val_len );
-                ctx->${idx}_len = var_$idx.val_len;
+                memcpy( ctx->$idx, var_${idx}.val.string, var_${idx}.val_len );
+                ctx->${idx}_len = var_${idx}.val_len;
              @end@
              @if $have_type == 0@
-                ctx->$idx = *var_$idx.val.integer;
+                ctx->$idx = *var_${idx}.val.integer;
              @end@
           @end@
    
@@ -535,19 +535,19 @@
           @eval $have_check = 0@
           @if "$c.type" eq "ASN_IPADDRESS"@
               @eval $have_check = 1@
-              * if ( XXX_check_ip( *var_$c.val.integer ) ) {
+              * if ( XXX_check_ip( *var_${c}.val.integer ) ) {
           @end@
           @if "$c.type" eq "ASN_OBJECT_ID"@
               @eval $have_check = 1@
-              * if ( XXX_check_oid( var_$c.val.objid, var_$c.val_len /
+              * if ( XXX_check_oid( var_${c}.val.objid, var_${c}.val_len /
                                     sizeof(oid) ) ) {
           @end@
           @if "$c.type" eq "ASN_OCTET_STR"@
               @eval $have_check = 1@
-              * if ( XXX_check_value( var_$c.val.string, XXX ) ) {
+              * if ( XXX_check_value( var_${c}.val.string, XXX ) ) {
           @end@
           @if $have_check != 1@
-              * if ( *var_$c.val.integer != XXX ) {
+              * if ( *var_${c}.val.integer != XXX ) {
           @end@
           *    err = -1;
           * }
diff --git a/local/mib2c.check_values.conf b/local/mib2c.check_values.conf
index 5200957..a101c01 100644
--- a/local/mib2c.check_values.conf
+++ b/local/mib2c.check_values.conf
@@ -28,7 +28,7 @@
 
   @foreach $i column@
     @if $i.access =~ /(Write|Create)/@
-      int check_$i(int type, $i.decl *val, size_t val_len, $i.decl *old_val, size_t old_val_len);
+      int check_${i}(int type, $i.decl *val, size_t val_len, $i.decl *old_val, size_t old_val_len);
     @end@
   @end@
 @end@
@@ -69,7 +69,7 @@
  *  @return 0 if the incoming value is legal, an SNMP error code otherwise.
  */
     int
-    check_$i(int type, $i.decl *val, size_t val_len,
+    check_${i}(int type, $i.decl *val, size_t val_len,
              $i.decl *old_val, size_t old_val_len) {
 
     int ret;
diff --git a/local/mib2c.conf b/local/mib2c.conf
index 2f5e5bf..ba1e9cc 100644
--- a/local/mib2c.conf
+++ b/local/mib2c.conf
@@ -183,9 +183,9 @@
 the agent?
 
  @prompt $ans "y" or "n": @
- @if $ans eq "y" or $ans eq "yes"@
+ @if ("$ans" eq "y") or ("$ans" eq "yes")@
    using mib2c.notify.conf to generate code for sending notifications
-   @run mib2c.nnotify.conf@
+   @run mib2c.notify.conf@
  @end@
 
 #  GENERATING HEADER FILE DEFINITIONS
