The following notes, keyed to comments in each program, explain the differences: Note 1 - BASE_AFT.C no longer refers to the _segment baseseg. All _based variables become _far variables. Note 2 - With Borland C++, there is no need to allocate a based heap. The Microsoft C6.0a _bmalloc calls become farmalloc calls. Note 3 - If you use based variables as arguments to standard C functions, you need to recast based heap pointers to far pointers to eliminate compiler warning messages. This is not needed with far heap pointers. Note 4 - Do a farfree function call instead of a _bfree function call, and remove the _bfreeseg function call. You could handle some of these changes transparently through the C preprocessor with #defines, but because all program changes cannot be managed this way, you would have a less clearly written program to maintain as a result. Instead, we suggest that you make the changes one by one directly in source code, as shown in BASE_AFT.C.