Index: libpolys/polys/ext_fields/algext.cc
===================================================================
--- libpolys/polys/ext_fields/algext.cc	(revision 1f414c83d736799f4aa2169403778da7b6403897)
+++ libpolys/polys/ext_fields/algext.cc	(revision 6637ee55dc87d61e2d841f88a872b6f3e2d2e402)
@@ -677,2 +677,16 @@
   return FALSE;
 }
+
+
+number naParam(short iParameter, const coeffs cf)
+{
+  assume(getCoeffType(cf) == ID);
+  
+  const ring R = cf->extRing;
+  assume( R != NULL );  
+  assume( 0 <= iParameter && iParameter < rVar(R) );
+  
+  poly p = p_One(R); p_SetExp(p, iParameter, 1, R); p_Setm(p, R);
+  
+  return (number) p; 
+}
Index: libpolys/polys/ext_fields/algext.h
===================================================================
--- libpolys/polys/ext_fields/algext.h	(revision 1f414c83d736799f4aa2169403778da7b6403897)
+++ libpolys/polys/ext_fields/algext.h	(revision 6637ee55dc87d61e2d841f88a872b6f3e2d2e402)
@@ -79,4 +79,6 @@
 */
 
+/// return the specified parameter as a number in the given alg. field
+number naParam(short iParameter, const coeffs cf);
 
 #endif
Index: libpolys/polys/ext_fields/transext.cc
===================================================================
--- libpolys/polys/ext_fields/transext.cc	(revision 1f414c83d736799f4aa2169403778da7b6403897)
+++ libpolys/polys/ext_fields/transext.cc	(revision 6637ee55dc87d61e2d841f88a872b6f3e2d2e402)
@@ -1130,2 +1130,23 @@
   return FALSE;
 }
+
+
+number ntParam(short iParameter, const coeffs cf)
+{
+  assume(getCoeffType(cf) == ID);
+
+  const ring R = cf->extRing;
+  assume( R != NULL );  
+  assume( 0 <= iParameter && iParameter < rVar(R) );
+
+  poly p = p_One(R); p_SetExp(p, iParameter, 1, R); p_Setm(p, R);
+
+//  return (number) p; 
+
+  fraction f = (fraction)omAlloc0Bin(fractionObjectBin);
+  NUM(f) = p;
+  DEN(f) = NULL;
+  COM(f) = 0;
+
+  return (number)f;
+}
Index: libpolys/polys/ext_fields/transext.h
===================================================================
--- libpolys/polys/ext_fields/transext.h	(revision 1f414c83d736799f4aa2169403778da7b6403897)
+++ libpolys/polys/ext_fields/transext.h	(revision 6637ee55dc87d61e2d841f88a872b6f3e2d2e402)
@@ -121,23 +121,6 @@
 */
 
-#ifdef LDEBUG
-#define ntTest(a) ntDBTest(a,__FILE__,__LINE__,cf)
-BOOLEAN  ntDBTest(number a, const char *f, const int l, const coeffs r);
-#else
-#define ntTest(a)
-#endif
-
-/* our own type */
-#define ntID n_transExt
-
-/* polynomial ring in which the numerators and denominators of our
-   numbers live */
-#define ntRing cf->extRing
-
-/* coeffs object in which the coefficients of our numbers live;
- * methods attached to ntCoeffs may be used to compute with the
- * coefficients of our numbers, e.g., use ntCoeffs->nAdd to add
- * coefficients of our numbers */
-#define ntCoeffs cf->extRing->cf
+/// return the specified parameter as a number in the given trans.ext.
+number ntParam(short iParameter, const coeffs cf);
 
 #endif
Index: libpolys/polys/monomials/ring.cc
===================================================================
--- libpolys/polys/monomials/ring.cc	(revision 1f414c83d736799f4aa2169403778da7b6403897)
+++ libpolys/polys/monomials/ring.cc	(revision 6637ee55dc87d61e2d841f88a872b6f3e2d2e402)
@@ -5558,2 +5558,31 @@
 }
 
+
+
+number n_Param(const short iParameter, const ring r)
+{
+  assume(r != NULL);
+  const coeffs C = r->cf;
+  assume(C != NULL);
+
+  const n_coeffType _filed_type = getCoeffType(C);
+
+  if ( iParameter < 0 || iParameter >= rPar(r) )
+    // Wrong parameter
+    return NULL;
+
+  if( _filed_type == n_algExt )
+  {
+    extern number naParam(short iParameter, const coeffs cf);
+    return naParam(iParameter, C);
+  }
+  
+  if( _filed_type == n_transExt )
+  {
+    extern number ntParam(short iParameter, const coeffs cf);
+    return ntParam(iParameter, C);
+  }
+    
+  return NULL;
+}
+
Index: libpolys/polys/monomials/ring.h
===================================================================
--- libpolys/polys/monomials/ring.h	(revision 1f414c83d736799f4aa2169403778da7b6403897)
+++ libpolys/polys/monomials/ring.h	(revision 6637ee55dc87d61e2d841f88a872b6f3e2d2e402)
@@ -560,4 +560,9 @@
   return NULL;
 }
+
+/// return the specified parameter as a (new!) number in the given
+/// polynomial ring, or NULL if invalid 
+number n_Param(const short iParameter, const ring r);
+
    
 /* R, Q, Fp: FALSE */
