diff --git a/Ccs/ccs_function_lib.py b/Ccs/ccs_function_lib.py
index c3d1fc58065bad239cddcf567640f7820ba46977..bdbb140e53a3d296a58b0f8ec57a899e81e39f71 100644
--- a/Ccs/ccs_function_lib.py
+++ b/Ccs/ccs_function_lib.py
@@ -4189,7 +4189,7 @@ def segment_data(data, segid, addr, seglen=480):
     return segments
 
 
-def source_to_srec(data, outfile, memaddr, header=None, bytes_per_line=32, skip_bytes=0):
+def source_to_srec(data, outfile, memaddr, header=None, bytes_per_line=32, skip_bytes=0, line_term='\n'):
     """
 
     :param data:
@@ -4221,15 +4221,16 @@ def source_to_srec(data, outfile, memaddr, header=None, bytes_per_line=32, skip_
     data = data[skip_bytes:]
 
     if header is None:
-        fname = outfile.split('/')[-1][-60:]
-        header = 'S0{:02X}0000{:}'.format(len(fname.encode('ascii')) + 3, fname.encode('ascii').ljust(24).hex().upper())
+        # fname = outfile.split('/')[-1][-60:]
+        fname = os.path.basename(outfile)[:32].encode('ascii') + b'\x00'
+        header = 'S0{:02X}0000{:}'.format(len(fname) + 3, fname.hex().upper())
         header += '{:02X}'.format(srec_chksum(header[2:]))
 
     datalen = len(data)
     data = io.BytesIO(data)
 
     sreclist = []
-    terminator = 'S705{:08X}'.format(memaddr)
+    terminator = 'S705{:08X}'.format(0)
     terminator += '{:02X}'.format(srec_chksum(terminator[2:]))
 
     while data.tell() < datalen:
@@ -4242,8 +4243,8 @@ def source_to_srec(data, outfile, memaddr, header=None, bytes_per_line=32, skip_
         memaddr += chunklen
 
     with open(outfile, 'w') as fd:
-        fd.write(header + '\n')
-        fd.write('\n'.join(sreclist) + '\n')
+        fd.write(header + line_term)
+        fd.write(line_term.join(sreclist) + line_term)
         fd.write(terminator)
 
     print('Data written to file: "{}", skipped first {} bytes.'.format(outfile, skip_bytes))