Index: iGeom.h
===================================================================
--- iGeom.h	(revision 3111)
+++ iGeom.h	(working copy)
@@ -2116,6 +2116,17 @@
 /**\brief 
  *
  */
+  void iGeom_createCone( iGeom_Instance,
+			 double height,
+			 double major_rad_base,
+			 double minor_rad_base,
+			 double rad_top,
+			 iBase_EntityHandle* geom_entity,
+			 int* err );
+
+/**\brief 
+ *
+ */
   void iGeom_createTorus( iGeom_Instance,
                           double major_rad,
                           double minor_rad,
Index: iGeom_CGMA.cc
===================================================================
--- iGeom_CGMA.cc	(revision 3111)
+++ iGeom_CGMA.cc	(working copy)
@@ -5301,8 +5301,30 @@
 
   RETURN(iBase_SUCCESS);
 }
-          
+      
 void
+iGeom_createCone (iGeom_Instance instance,
+		  /*in*/ double height,
+		  /*in*/ double major_rad_base,
+		  /*in*/ double minor_rad_base,
+		  /*in*/ double rad_top,
+		  /*out*/ iBase_EntityHandle *geom_entity,
+		  int* err)
+{
+  double tmp_minor = (0.0 == minor_rad_base ? major_rad_base : minor_rad_base);
+  RefEntity *temp_body = 
+    gmt->cylinder(height, major_rad_base, tmp_minor, rad_top);
+  *geom_entity = reinterpret_cast<iBase_EntityHandle>(temp_body);
+
+
+  if (NULL == *geom_entity) {
+    RETURN(iBase_FAILURE);
+  }
+
+  RETURN(iBase_SUCCESS);
+}
+    
+void
 iGeom_createTorus (iGeom_Instance instance,
                    /*in*/ double major_rad,
                    /*in*/ double minor_rad,
