diff --git a/RIGAL/rigsc.446/src/c4.c b/RIGAL/rigsc.446/src/c4.c
index c1a81e82fa57653c7f8cb5968712d4be7eeb84ff..44f0c6f067f2d12da3cf6bab5b79b2bcb6516bcb 100644
--- a/RIGAL/rigsc.446/src/c4.c
+++ b/RIGAL/rigsc.446/src/c4.c
@@ -289,13 +289,13 @@ long xa, l1,l2;
 /* l1[xx]!!:=l2 */
 { a wrk;
     indxop(xx, isobject, xa, l1, &wrk);
-    if (wrk==NULL) {
+    if (wrk==null_) {
                        concop(& wrk,l2);
                        setind(xx, isobject, xa, l1,  wrk);
                    }
     else {
              concop(& wrk,l2);
-             if (wrk==NULL) {
+             if (wrk==null_) {
                                 setind(xx, isobject, xa, l1, NULL);
                             }
          }
@@ -308,13 +308,13 @@ long xa, l1,l2;
 /* l1[xx]!!:=l2 */
 { a wrk;
     indxop(xx, isobject, xa, l1, &wrk);
-    if (wrk==NULL) {
+    if (wrk==null_) {
                        addtre(& wrk,l2);
                        setind(xx, isobject, xa, l1,  wrk);
                    }
     else {
              addtre(& wrk,l2);
-             if (wrk==NULL) {
+             if (wrk==null_) {
                                 setind(xx, isobject, xa, l1, NULL);
                             }
          }
diff --git a/RIGAL/rigsc.446/src/ic.c b/RIGAL/rigsc.446/src/ic.c
index e5be0d1f4e5ceb4ff77b79bf83c4d338aabc8ef1..27dd13936e277bf7bc2cf52525b58db25625e78b 100644
--- a/RIGAL/rigsc.446/src/ic.c
+++ b/RIGAL/rigsc.446/src/ic.c
@@ -86,12 +86,13 @@ _L18:
 
   max_printlevel = max_printconst;
 
-  sprintf(p2, "%s.rsc", p1);
+  memset (p2,0,80);
+  memmove(p2,p1,75);
+  memmove(&(p2[(int) strlen(p2)]),".rsc",4);
 
-  if (!existfile(p2)) {
+  if (!existfile(p2)) 
+  {
     printf("\nERROR:  Code %s not found\n", p2);
-
-
     goto _L99;
   }
   loads(p2, &ttt);
diff --git a/RIGAL/rigsc.446/src/rc_.c b/RIGAL/rigsc.446/src/rc_.c
index 6ef21cc7df9b1f04a13ab0e4aa385380483253c2..cd302c8cdac1262766d5a189311c85ffac23381f 100644
--- a/RIGAL/rigsc.446/src/rc_.c
+++ b/RIGAL/rigsc.446/src/rc_.c
@@ -596,9 +596,15 @@ char *an_argv[];
   V.icc = 0;
   er = false;
   *error_rec_ch.message = '\0';
-  sprintf(error_rec_ch.filename, "%s.rig", main_name);
+  memset( error_rec_ch.filename,0,80);
+  memmove(error_rec_ch.filename,main_name,75);
+  memmove(&(error_rec_ch.filename[(int)strlen(error_rec_ch.filename)]),".rig",4);
+  //sprintf(error_rec_ch.filename, "%s.rig", main_name);
   error_rec_ch_adr = 0;
-  sprintf(error_rec_ch_mainstr, "%s.rig", main_name);
+  memset( error_rec_ch_mainstr,0,80);
+  memmove(error_rec_ch_mainstr,main_name,75);
+  memmove(&(error_rec_ch_mainstr[(int)strlen(error_rec_ch_mainstr)]),".rig",4);
+  //sprintf(error_rec_ch_mainstr, "%s.rig", main_name);
 
   chepro();   /* prolog of checker , makes deskriptrs  */
 
diff --git a/RIGAL/rigsc.446/src/sevice.c b/RIGAL/rigsc.446/src/sevice.c
index bc2b278f43bddae8777fe862aa4240417bd79089..07fc159a8a67b4ed312a3e90444890bec857b66e 100644
--- a/RIGAL/rigsc.446/src/sevice.c
+++ b/RIGAL/rigsc.446/src/sevice.c
@@ -54,8 +54,41 @@ int d;
   exit(0);
 }
 
+char *real_to_string_f(char *Result, double ar, long total_num_digits, long num_digits_after_decimal_point)
+{
+  if (total_num_digits > 80) total_num_digits = 80;
+
+  char representation[81];
+  memset(representation,0,81);
+  gcvt(ar,total_num_digits,representation); // provide minimum represtation as a string. 
+  
+  char *decimal_point    = strchr( representation, '.' );
+  char *first_null_byte  = strchr( representation, '\0');
+  char *last_null_byte   = &representation[80];
+  
+  if (decimal_point != NULL)
+  {
+    int i = num_digits_after_decimal_point - ((int) abs((first_null_byte)-decimal_point-1));
+
+  	char *current_byte     =  first_null_byte;
+	while ( (current_byte != last_null_byte) && (i>0) )
+    {
+     *current_byte = '0';
+      current_byte++;
+      i--;
+    }
+  }
+  
+  memset(Result,' ',80);
+  int len = strlen(representation);
+  memmove( &Result[(80-len)], representation,len);
+  
+ return Result;  
+ }
+
+/*
 Char *real_to_string_f(Result, ar, dignum, afterpoint)
-Char *Result;  /* MANUAL CHANGE char to Char */
+Char *Result;  // MANUAL CHANGE char to Char 
 double ar;
  long dignum, afterpoint;
 {
@@ -88,10 +121,10 @@ double ar;
     while (strlen(bs) != dignum)
       sprintf(bs, " %s", strcpy(STR1, bs));
   }
- strcpy(Result,bs);  /* Splitted manually */
+ strcpy(Result,bs);  // Splitted manually 
  return Result;  
  }
-
+*/
 
 long str_to_atom(ssr_)
 Char *ssr_;